iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >sql server编写通用脚本如何实现获取一年前日期
  • 476
分享到

sql server编写通用脚本如何实现获取一年前日期

2024-04-02 19:04:59 476人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关SQL Server编写通用脚本如何实现获取一年前日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题:  在数据库编程开发中,有时需要获取一年前的日

这篇文章给大家分享的是有关SQL Server编写通用脚本如何实现获取一年前日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

问题:

  在数据库编程开发中,有时需要获取一年前的日期,以便以此为时间的分界点,查询其前后对应的数据量。例如:

1. 想查询截止到一年前当天0点之前的数据量,以及一年前当天0点开始到现在的数据量。
2. 想查询截止到一年前当天24点之前的数据量,以及一年前当天24点开始到现在的数据量。
3. 想查询截止到一年前当月1日0点之前的数据量,以及一年前当月1日0点开始到现在的数据量。
4. 想查询截止到一年前当月最后一天24点之前的数据量,以及一年前当月最后一天24点开始到现在的数据量。

  以上这四种情况的具体查询场景,有arcHive数据脚本开发之前对数据库数据量的分布情况进行统计等,也有根据当前日期动态计算一年来的增量增幅情况等。

  如果每次接到这样的需求需要获取一年前日期,然后每次重新思考怎么去实现肯定是不明智的,或者说公司内已经有人写了脚本实现,但其他同事遇到相同的问题,又重新构思一次,这样就比较浪费时间和精力,耗在这个细节上一些精力,有点像要做饭可是没有米就要先去买米的感觉,而且容易造成不同人写的脚本不统一,不利于代码规范化标准化的原则,不同的人跟进的时候还要去想想之前的人写的是什么逻辑。而且重新开发脚本的话,又需要重新进行自测,不利于提高工作效率。

解决方案:

  首先简单介绍一下基本的知识点:

getdate()是获取当前日期;
dateadd可以对日期进行增减,在这里用来对年份减少1【dateadd(year, -1, 日期字符串)】,也可以用来对月份增加1【dateadd(month, 1, 日期字符串)】;
convert可以对日期进行字符串截取转换操作,在这里可以只截取形如2019-07-17的年月日【convert(varchar(10), 日期字符串, 120))】,也可以只截取形如2019-07的年月部分【convert(varchar(7), 日期字符串, 120))】。  

然后就是针对上面4个问题对应的4个解决方法:

1. 最简单,对当前日期进行减少1年的运算,然后只截取年月日。
2. 先对当前日期进行增加1天的运算,然后再减少1年,最后只截取年月日。
3. 先对当前日期进行截取年月操作,然后再指定为当月01日,再减少1年,最后只截取年月日。
4. 先对当前日期进行截取年月操作,然后再指定为当月01日,再减少1年,并加上1个月,最后只截取年月日。

  最后就可以直接在查询脚本条件中使用这个时间节点:

查询统计时间节点之前:select count(*) from 表 where 时间字段 < @datePoint

查询统计时间节点开始到现在:select count(*) from 表 where 时间字段 >= @datePoint

脚本:


--1.截止到一年前当天0点
declare @datePoint datetime = convert(varchar(10), dateadd(year, -1, getdate()), 120)
select @datePoint as DatePoint
Go
--2.截止到一年前当天24点
declare @datePoint datetime = convert(varchar(10), dateadd(year, -1, dateadd(day, 1, getdate())), 120)
select @datePoint as DatePoint
go
--3.截止到一年前当月1日0点
declare @datePoint datetime = convert(varchar(10), dateadd(year, -1, convert(varchar(7), getdate(), 120) + '-01'), 120)
select @datePoint as DatePoint
go
--4.截止到一年前当月最后一天24点
declare @datePoint datetime = convert(varchar(10), dateadd(month, 1, dateadd(year, -1, convert(varchar(7), getdate(), 120) + '-01')), 120)
select @datePoint as DatePoint
go

脚本运行结果:

sql server编写通用脚本如何实现获取一年前日期

感谢各位的阅读!关于“sql server编写通用脚本如何实现获取一年前日期”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: sql server编写通用脚本如何实现获取一年前日期

本文链接: https://www.lsjlt.com/news/55734.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql server编写通用脚本如何实现获取一年前日期
    这篇文章给大家分享的是有关sql server编写通用脚本如何实现获取一年前日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题:  在数据库编程开发中,有时需要获取一年前的日...
    99+
    2022-10-18
  • sql server编写archive通用模板脚本如何实现自动分批删除数据
    这篇文章主要介绍了sql server编写archive通用模板脚本如何实现自动分批删除数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。做...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作