加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 13:56:30 所属栏目:MsSql教程 来源:网络整理
导读:将日期转换成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.指定日期该年的第一

将日期转换成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??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读