在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

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

108次阅读
没有评论

共计 2028 个字符,预计需要花费 6 分钟才能阅读完成。

自动写代码机器人,免费开通

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

问题:

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

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

脚本:

/*
  功能:获取一年前日期
  作者:zhang502219048
  脚本来源:https://www.cnblogs.com/zhang502219048/p/11198789.html
--1. 截止到一年前当天 0 点
declare @datePoint datetime = convert(varchar(10), dateadd(year, -1, getdate()), 120)
select @datePoint as DatePoint
--2. 截止到一年前当天 24 点
declare @datePoint datetime = convert(varchar(10), dateadd(year, -1, dateadd(day, 1, getdate())), 120)
select @datePoint as DatePoint
--3. 截止到一年前当月 1 日 0 点
declare @datePoint datetime = convert(varchar(10), dateadd(year, -1, convert(varchar(7), getdate(), 120) +  -01 ), 120)
select @datePoint as DatePoint
--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 编写通用脚本如何实现获取一年前日期”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2028字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 欧美巨大xxxx做受中文字幕 | 久久久一级 | 精品人妻午夜一区二区三区四区 | 久久久久久久久久久久中文字幕 | 亚洲国产成人精品一区91 | 色播在线永久免费视频网站 | 国产精品自产拍在线观看 | 欧美综合区自拍亚洲综合 | 久国产精品人妻aⅴ | 鲁老汉精品视频在线观看 | 欧美激情综合色综合啪啪五月 | 伊人网综合在线观看 | 狠狠色综合7777久夜色撩人ⅰ | 亚洲精品久久久久中文字幕二区 | 国产亚洲精品va在线 | 99久久久国产精品免费播放器 | 精品一区二区三区四区五区 | 久久高清免费 | 精品日韩欧美一区二区在线播放 | 一级做a爰片久久毛片潮喷 一级做a爰片久久毛片看看 | 男人女人午夜视频免费 | 中文字幕一区二区人妻 | 男人扒开女人双腿猛进视频 | 日韩男人的天堂 | 最近中文字幕视频高清 | 午夜18禁自慰jk爆乳网站 | 伊人狠狠干 | 黄色小视频在线免费观看 | 女人的精水喷出来视频 | 国产在线拍揄自揄拍无码 | 国产精品毛片在线完整版 | 福利视频在线观看www. | 亚洲人成网站999久久久综合 | 97干色| 精品无码av无码免费专区 | 色婷五月综激情亚洲综合 | 在线播放免费人成毛片乱码 | 色综合久久精品亚洲国产 | 日韩欧群交p片内射中文 | 日本一级在线播放线观看视频 | 中文字幕乱偷无码av先锋 |