
sql日期操作收集
发布日期:2021-05-13 07:42:06
浏览次数:18
分类:博客文章
本文共 2942 字,大约阅读时间需要 9 分钟。
DECLARE @dt datetime SET @dt=GETDATE() DECLARE @number int SET @number=3 --1.指定日期该年的第一天或最后一天 --A. 年的第一天 SELECT CONVERT(char(5),@dt,120)+'1-1' --B. 年的最后一天 SELECT CONVERT(char(5),@dt,120)+'12-31' --2.指定日期所在季度的第一天或最后一天 --A. 季度的第一天 SELECT CONVERT(datetime, CONVERT(char(8), DATEADD(Month, DATEPART(Quarter,@dt)*3-Month(@dt)-2, @dt), 120)+'1') --B. 季度的最后一天(CASE判断法) SELECT CONVERT(datetime, CONVERT(char(8), DATEADD(Month, DATEPART(Quarter,@dt)*3-Month(@dt), @dt), 120) +CASE WHEN DATEPART(Quarter,@dt) in(1,4) THEN '31'ELSE '30' END) --C. 季度的最后一天(直接推算法) SELECT DATEADD(Day,-1, CONVERT(char(8), DATEADD(Month, 1+DATEPART(Quarter,@dt)*3-Month(@dt), @dt), 120)+'1') --3.指定日期所在月份的第一天或最后一天 --A. 月的第一天 SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1') --B. 月的最后一天 SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1') --C. 月的最后一天(容易使用的错误方法) SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt)) --4.指定日期所在周的任意一天 SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt) --5.指定日期所在周的任意星期几 --A. 星期天做为一周的第1天 SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt) --B. 星期一做为一周的第1天 SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt) --获取上周的第一天 和最后一天 declare @dt datetime declare @firstday datetime declare @lastday datetime set @dt=dateadd(day,-7,getdate()) select @dt = dateadd(Day,1-(datepart(Weekday,@dt)+@@datefirst-2)%7-1,@dt) set @firstday = cast(convert(char(10),@dt,120) +' 00:00:00' as datetime) select @lastday = cast(convert(char(10),dateadd(day,6,@dt),120)+' 23:59:59' as datetime) select @firstday,@lastday --昨天的时间范围 select cast(convert(char(10),dateadd(day,-1,getdate()),120) + ' 00:00:00' as datetime) select cast(convert(char(10),dateadd(day,-1,getdate()),120) + ' 23:59:59' as datetime) --1.获取今天的开始时间和最后时间 --2.获取昨天的开始时间和最后时间 --3.获取上周的开始时间和最后时间 --4.获取上月的开始时间和最后时间 declare @dt datetime declare @firstdate1 datetime,@lastdate1 datetime declare @firstdate2 datetime,@lastdate2 datetime declare @firstdate3 datetime,@lastdate3 datetime declare @firstdate4 datetime,@lastdate4 datetime set @dt = getdate() set @firstdate1 = cast(convert(char(10),getdate(),120) + ' 00:00:00' as datetime) set @lastdate1 = cast(convert(char(10),getdate(),120) + ' 23:59:59' as datetime) --select @firstdate1,@lastdate1 set @dt = dateadd(day,-1,getdate()) set @firstdate2 = cast(convert(char(10),@dt,120) + ' 00:00:00' as datetime) set @lastdate2 = cast(convert(char(10),@dt,120) + ' 23:59:59' as datetime) --select @dt,@firstdate2,@lastdate2 set @dt = dateadd(day,-7,getdate()) set @dt = dateadd(day,-(datepart(weekday,@dt) -2),@dt) set @firstdate3 = cast(convert(char(10),@dt,120) + ' 00:00:00' as datetime) set @lastdate3 = cast(convert(char(10),dateadd(day,6,@dt),120) + ' 23:59:59' as datetime) --select @dt,@firstdate3,@lastdate3 set @dt = getdate() set @firstdate4 = cast(convert(char(8),@dt,120) +'01 00:00:00' as datetime) set @lastdate4 = dateadd(month,1,@firstdate4) --select @dt,@firstdate4,@lastdate4
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月23日 03时14分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
此主机支持Intel VT-x,但Intel VT-x 处于禁用状态。
2019-03-11
(linux基础17)Linux系统引导修复,各种系统疑难杂症
2019-03-11
golang reflect实例
2019-03-11