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),@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)

 

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

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

日期的格式化操作

 

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

 

 

 

posted on 2011-02-22 12:17  gongwei911  阅读(1100)  评论(0编辑  收藏  举报

导航