日期相关计算经典集

  1 --计算一个月第一天
  2 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 
  3 --计算今天年的第一天
  4 SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 
  5 --本周的星期一 
  6 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) 
  7 --季度的第一天 
  8 SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) 
  9 --当天的半夜
 10 SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 
 11 --上个月的最后一天 
 12 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) 
 13 --去年的最后一天 
 14 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) 
 15 --本月的最后一天 
 16 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) 
 17 --本年的最后一天 
 18 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
 19 --本月的第一个星期一 
 20 select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate()) ), 0) 
 21 --去掉时分秒 
 22 declare @ datetime 
 23 set @ = getdate() --'2003-7-1 10:00:00' 
 24 SELECT @,DATEADD(day, DATEDIFF(day,0,@), 0) 
 25 --显示星期几 
 26 select datename(weekday,getdate()) 
 27 --取得某个月的天数 
 28 declare @m int 
 29 set @m=2 --月份 
 30 select datediff(day,'2009-'+cast(@m as varchar)+'-15' ,'2009-'+cast(@m+1 as varchar)+'-15') 
 31 --另外,取得本月天数 
 32 select datediff(day,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate()) as varchar)+'-15' ,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate())+1 as varchar)+'-15') 
 33 --或者使用计算本月的最后一天的脚本,然后用DAY函数区最后一天 
 34 SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))) 
 35 --判断是否闰年: 
 36 SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then '平年' else '闰年' end 
 37 
 38 select case datediff(day,datename(year,getdate())+'-02-01',dateadd(mm,1,datename(year,getdate())+'-02-01')) 
 39 when 28 then '平年' else '闰年' end 
 40 --一个季度多少天 
 41 declare @m tinyint,@time smalldatetime 
 42 select @m=month(getdate()) 
 43 select @m=case when @m between 1 and 3 then 1 
 44 when @m between 4 and 6 then 4 
 45 when @m between 7 and 9 then 7 
 46 else 10 end 
 47 select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01' 
 48 select datediff(day,@time,dateadd(mm,3,@time)) 
 49 
 50 --用一条语句得出某日期所在月份的最大天数
 51 SELECT DAY(DATEADD(dd, -DAY('2009-02-13'), DATEADD(mm, 1, '2009-02-13'))) AS 'Day Number'
 52 
 53 
 54 
 55 --Sql Server 中一个非常强大的日期格式化函数
 56 Select CONVERT(varchar(100), GETDATE(), 0)--: 01 20 2010 11:27AM
 57 Select CONVERT(varchar(100), GETDATE(), 1)--: 01/20/10
 58 Select CONVERT(varchar(100), GETDATE(), 2)--: 10.01.20
 59 Select CONVERT(varchar(100), GETDATE(), 3)--: 20/01/10
 60 Select CONVERT(varchar(100), GETDATE(), 4)--: 20.01.10
 61 Select CONVERT(varchar(100), GETDATE(), 5)--: 16-05-06
 62 Select CONVERT(varchar(100), GETDATE(), 6)--: 16 05 06
 63 Select CONVERT(varchar(100), GETDATE(), 7)--: 05 16, 06
 64 Select CONVERT(varchar(100), GETDATE(), 8)--: 10:57:46
 65 Select CONVERT(varchar(100), GETDATE(), 9)--: 05 16 2006 10:57:46:827AM
 66 Select CONVERT(varchar(100), GETDATE(), 10)--: 05-16-06
 67 Select CONVERT(varchar(100), GETDATE(), 11)--: 06/05/16
 68 Select CONVERT(varchar(100), GETDATE(), 12)--: 060516
 69 Select CONVERT(varchar(100), GETDATE(), 13)--: 16 05 2006 10:57:46:937
 70 Select CONVERT(varchar(100), GETDATE(), 14)--: 10:57:46:967
 71 Select CONVERT(varchar(100), GETDATE(), 20)--: 2006-05-16 10:57:47
 72 Select CONVERT(varchar(100), GETDATE(), 21)--: 2006-05-16 10:57:47.157
 73 Select CONVERT(varchar(100), GETDATE(), 22)--: 05/16/06 10:57:47 AM
 74 Select CONVERT(varchar(100), GETDATE(), 23)--: 2006-05-16
 75 Select CONVERT(varchar(100), GETDATE(), 24)--: 10:57:47
 76 Select CONVERT(varchar(100), GETDATE(), 25)--: 2006-05-16 10:57:47.250
 77 Select CONVERT(varchar(100), GETDATE(), 100)--: 05 16 2006 10:57AM
 78 Select CONVERT(varchar(100), GETDATE(), 101)--: 05/16/2006
 79 Select CONVERT(varchar(100), GETDATE(), 102)--: 2006.05.16
 80 Select CONVERT(varchar(100), GETDATE(), 103)--: 16/05/2006
 81 Select CONVERT(varchar(100), GETDATE(), 104)--: 16.05.2006
 82 Select CONVERT(varchar(100), GETDATE(), 105)--: 16-05-2006
 83 Select CONVERT(varchar(100), GETDATE(), 106)--: 16 05 2006
 84 Select CONVERT(varchar(100), GETDATE(), 107)--: 05 16, 2006
 85 Select CONVERT(varchar(100), GETDATE(), 108)--: 10:57:49
 86 Select CONVERT(varchar(100), GETDATE(), 109)--: 05 16 2006 10:57:49:437AM
 87 Select CONVERT(varchar(100), GETDATE(), 110)--: 05-16-2006
 88 Select CONVERT(varchar(100), GETDATE(), 111)--: 2006/05/16
 89 Select CONVERT(varchar(100), GETDATE(), 112)--: 20060516
 90 Select CONVERT(varchar(100), GETDATE(), 113)--: 16 05 2006 10:57:49:513
 91 Select CONVERT(varchar(100), GETDATE(), 114)--: 10:57:49:547
 92 Select CONVERT(varchar(100), GETDATE(), 120)--: 2006-05-16 10:57:49
 93 Select CONVERT(varchar(100), GETDATE(), 121)--: 2006-05-16 10:57:49.700
 94 Select CONVERT(varchar(100), GETDATE(), 126)--: 2006-05-16T10:57:49.827
 95 Select CONVERT(varchar(100), GETDATE(), 130)--: 18 ???? ?????? 1427 10:57:49:907AM
 96 Select CONVERT(varchar(100), GETDATE(), 131)--: 18/04/1427 10:57:49:920AM
 97 
 98 --常用:
 99 Select CONVERT(varchar(100), GETDATE(), 8)--: 10:57:46
100 Select CONVERT(varchar(100), GETDATE(), 24)--: 10:57:47
101 Select CONVERT(varchar(100), GETDATE(), 108)--: 10:57:49
102 Select CONVERT(varchar(100), GETDATE(), 12)--: 060516
103 Select CONVERT(varchar(100), GETDATE(), 23)--: 2006-05-16 
104 Select CONVERT(varchar(100), GETDATE(), 102)--: 2010.01.20
105 Select CONVERT(varchar(100), GETDATE(), 112)--: 20100120

猜你喜欢

转载自www.cnblogs.com/Challenger/p/10887352.html