微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver中日期函数操作(收藏)

将日期转换成int

DECLARE @d DATETIME
DECLARE @n INT
SET @d = '2007-08-01 12:00:00'
SET @n = CAST(@d AS INT)
SELECT @d,@n,CAST(@n AS DATETIME)

 

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),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,@dt)*3-Month(@dt),
        120)
    +CASE WHEN DATEPART(Quarter,@dt) in(1,4)
        THEN '31'ELSE '30' END)

--C. 季度的最后一天(直接推算法)
SELECT DATEADD(Day,-1,
            1+DATEPART(Quarter,
        120)+'1')


--3.指定日期所在月份的第一天或最后一天
--A. 月的第一天
SELECT CONVERT(datetime,CONVERT(char(8),120)+'1')

--B. 月的最后一天
SELECT DATEADD(Day,DATEADD(Month,1,@dt),120)+'1')

--C. 月的最后一天(容易使用的错误方法
SELECT DATEADD(Month,DATEADD(Day,-DAY(@dt),@dt))


--4.指定日期所在周的任意一天
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt)


--5.指定日期所在周的任意星期几
--A.  星期天做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFirsT-1)%7,@dt)

--B.  星期一做为一周的第1天
SELECT DATEADD(Day,@dt)+@@DATEFirsT-2)%7-1,@dt)

 

上个月的第一天
SELECT DATEADD(mm,DATEDIFF(mm,getdate())-1,0)
上个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm,getdate()),0))

==================================================

日期的格式化操作

 

  1. Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM   
  2. Select CONVERT(varchar(100), 1): 05/16/06   
  3. Select CONVERT(varchar(100), 2): 06.05.16   
  4. Select CONVERT(varchar(100), 3): 16/05/06   
  5. Select CONVERT(varchar(100), 4): 16.05.06   
  6. Select CONVERT(varchar(100), 5): 16-05-06   
  7. Select CONVERT(varchar(100), 6): 16 05 06   
  8. Select CONVERT(varchar(100), 7): 05 16, 06   
  9. Select CONVERT(varchar(100), 8): 10:57:46   
  10. Select CONVERT(varchar(100), 9): 05 16 2006 10:57:46:827AM   
  11. Select CONVERT(varchar(100), 10): 05-16-06   
  12. Select CONVERT(varchar(100), 11): 06/05/16   
  13. Select CONVERT(varchar(100), 12): 060516   
  14. Select CONVERT(varchar(100), 13): 16 05 2006 10:57:46:937   
  15. Select CONVERT(varchar(100), 14): 10:57:46:967   
  16. Select CONVERT(varchar(100), 20): 2006-05-16 10:57:47   
  17. Select CONVERT(varchar(100), 21): 2006-05-16 10:57:47.157   
  18. Select CONVERT(varchar(100), 22): 05/16/06 10:57:47 AM   
  19. Select CONVERT(varchar(100), 23): 2006-05-16   
  20. Select CONVERT(varchar(100), 24): 10:57:47   
  21. Select CONVERT(varchar(100), 25): 2006-05-16 10:57:47.250   
  22. Select CONVERT(varchar(100), 100): 05 16 2006 10:57AM   
  23. Select CONVERT(varchar(100), 101): 05/16/2006   
  24. Select CONVERT(varchar(100), 102): 2006.05.16   
  25. Select CONVERT(varchar(100), 103): 16/05/2006   
  26. Select CONVERT(varchar(100), 104): 16.05.2006   
  27. Select CONVERT(varchar(100), 105): 16-05-2006   
  28. Select CONVERT(varchar(100), 106): 16 05 2006   
  29. Select CONVERT(varchar(100), 107): 05 16, 2006   
  30. Select CONVERT(varchar(100), 108): 10:57:49   
  31. Select CONVERT(varchar(100), 109): 05 16 2006 10:57:49:437AM   
  32. Select CONVERT(varchar(100), 110): 05-16-2006   
  33. Select CONVERT(varchar(100), 111): 2006/05/16   
  34. Select CONVERT(varchar(100), 112): 20060516   
  35. Select CONVERT(varchar(100), 113): 16 05 2006 10:57:49:513   
  36. Select CONVERT(varchar(100), 114): 10:57:49:547   
  37. Select CONVERT(varchar(100), 120): 2006-05-16 10:57:49   
  38. Select CONVERT(varchar(100), 121): 2006-05-16 10:57:49.700   
  39. Select CONVERT(varchar(100), 126): 2006-05-16T10:57:49.827   
  40. Select CONVERT(varchar(100), 130): 18 ???? ?????? 1427 10:57:49:907AM   
  41. Select CONVERT(varchar(100), 131): 18/04/1427 10:57:49:920AM  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐