SqlServer 日期函数
🏷️ SQL Server
日期函数
GETDATE()
得到当前时间,可以设置得到各种时间格式.
DATEPART(日期部分,日期)
取指定时间的某一个部分,年月天时分秒.
DATEDIFF(日期部分,日期 1,日期 2)
计算指定的日期 1 和日期 2 的时间差多少.
DATEADD(日期部分,数值表达式,日期)
计算指定时间,再加上表达式指定的时间长度.
取前几天
sql
SELECT DATEADD(DAY,-10,GETDATE())
取时间的某一个部分
sql
SELECT DATEPART(yy,GETDATE()) --year
SELECT DATEPART(mm,GETDATE()) --month
SELECT DATEPART(dd,GETDATE()) --day
SELECT DATEPART(hh,GETDATE()) --hour
SELECT DATEPART(mi,GETDATE()) --min
SELECT DATEPART(ss,GETDATE()) --sec
取星期几
sql
SET datefirst 1
SELECT DATEPART(weekday,GETDATE()) /*--weekday*/
字符串时间
点击查看 SQL
sql
SELECT CONVERT(VARCHAR(100), GETDATE(), 0) -- 05 16 2006 10:57AM
SELECT CONVERT(VARCHAR(100), GETDATE(), 1) -- 05/16/06
SELECT CONVERT(VARCHAR(100), GETDATE(), 2) -- 06.05.16
SELECT CONVERT(VARCHAR(100), GETDATE(), 3) -- 16/05/06
SELECT CONVERT(VARCHAR(100), GETDATE(), 4) -- 16.05.06
SELECT CONVERT(VARCHAR(100), GETDATE(), 5) -- 16-05-06
SELECT CONVERT(VARCHAR(100), GETDATE(), 6) -- 16 05 06
SELECT CONVERT(VARCHAR(100), GETDATE(), 7) -- 05 16, 06
SELECT CONVERT(VARCHAR(100), GETDATE(), 8) -- 10:57:46
SELECT CONVERT(VARCHAR(100), GETDATE(), 9) -- 05 16 2006 10:57:46:827AM
SELECT CONVERT(VARCHAR(100), GETDATE(), 10) -- 05-16-06
SELECT CONVERT(VARCHAR(100), GETDATE(), 11) -- 06/05/16
SELECT CONVERT(VARCHAR(100), GETDATE(), 12) -- 060516
SELECT CONVERT(VARCHAR(100), GETDATE(), 13) -- 16 05 2006 10:57:46:937
SELECT CONVERT(VARCHAR(100), GETDATE(), 14) -- 10:57:46:967
SELECT CONVERT(VARCHAR(100), GETDATE(), 20) -- 2006-05-16 10:57:47
SELECT CONVERT(VARCHAR(100), GETDATE(), 21) -- 2006-05-16 10:57:47.157
SELECT CONVERT(VARCHAR(100), GETDATE(), 22) -- 05/16/06 10:57:47 AM
SELECT CONVERT(VARCHAR(100), GETDATE(), 23) -- 2006-05-16
SELECT CONVERT(VARCHAR(100), GETDATE(), 24) -- 10:57:47
SELECT CONVERT(VARCHAR(100), GETDATE(), 25) -- 2006-05-16 10:57:47.250
SELECT CONVERT(VARCHAR(100), GETDATE(), 100) -- 05 16 2006 10:57AM
SELECT CONVERT(VARCHAR(100), GETDATE(), 101) -- 05/16/2006
SELECT CONVERT(VARCHAR(100), GETDATE(), 102) -- 2006.05.16
SELECT CONVERT(VARCHAR(100), GETDATE(), 103) -- 16/05/2006
SELECT CONVERT(VARCHAR(100), GETDATE(), 104) -- 16.05.2006
SELECT CONVERT(VARCHAR(100), GETDATE(), 105) -- 16-05-2006
SELECT CONVERT(VARCHAR(100), GETDATE(), 106) -- 16 05 2006
SELECT CONVERT(VARCHAR(100), GETDATE(), 107) -- 05 16, 2006
SELECT CONVERT(VARCHAR(100), GETDATE(), 108) -- 10:57:49
SELECT CONVERT(VARCHAR(100), GETDATE(), 109) -- 05 16 2006 10:57:49:437AM
SELECT CONVERT(VARCHAR(100), GETDATE(), 110) -- 05-16-2006
SELECT CONVERT(VARCHAR(100), GETDATE(), 111) -- 2006/05/16
SELECT CONVERT(VARCHAR(100), GETDATE(), 112) -- 20060516
SELECT CONVERT(VARCHAR(100), GETDATE(), 113) -- 16 05 2006 10:57:49:513
SELECT CONVERT(VARCHAR(100), GETDATE(), 114) -- 10:57:49:547
SELECT CONVERT(VARCHAR(100), GETDATE(), 120) -- 2006-05-16 10:57:49
SELECT CONVERT(VARCHAR(100), GETDATE(), 121) -- 2006-05-16 10:57:49.700
SELECT CONVERT(VARCHAR(100), GETDATE(), 126) /*-- 2006-05-16T10:57:49.827 --整数时间*/
sql
SELECT DATEPART(hh,GETDATE())*10000 + DATEPART(mi,GETDATE())*100 + DATEPART(ss,GETDATE()) -- 110646
时间格式 "YYYY.MM.DD HH:MI:MS" 转换为 "YYYYMMDDHHMISS"
sql
DECLARE @a DATETIME,@tmp VARCHAR(20),@tmp1 VARCHAR(20)
SELECT @a=CONVERT(DATETIME,'2004.08.03 12:12:12')
SELECT @tmp=CONVERT(CHAR(10),@a,112)
SELECT @tmp
SELECT @tmp1=CONVERT(CHAR(10),DATEPART(hh,@a)*10000 + DATEPART(mi,@a)*100 + DATEPART(ss,@a))
SELECT @tmp1
SELECT @tmp=@tmp+@tmp1
SELECT @tmp
当月最后一天
sql
DECLARE
@tmpstr VARCHAR(10)
@mm INT,
@premm INT,
@curmmlastday VARCHAR(10)
BEGIN
SELECT @mm=DATEPART(MONTH,GETDATE())--当月
SELECT @premm=DATEPART(MONTH,DATEADD(MONTH,-1,GETDATE())) --上个月
IF (@mm>=1 AND @mm<=8)
SELECT @tmpstr=CONVERT(CHAR(4),DATEPART(YEAR,GETDATE()))+'.0'+CONVERT(CHAR(1),DATEPART(MONTH,DATEADD(MONTH,1,GETDATE())))+'.'+'01'
ELSE IF (@mm>=9 @mm<=11)
SELECT tmpstr=CONVERT(CHAR(4),DATEPART(YEAR,GETDATE()))+'.'+CONVERT(CHAR(2),DATEPART(MONTH,DATEADD(MONTH,1,GETDATE())))+'.'+'01'
ELSE
SELECT tmpstr=CONVERT(CHAR(4),DATEPART(YEAR,DATEADD(YEAR,1,GETDATE())))+'.0'+CONVERT(CHAR(1),DATEPART(MONTH,DATEADD(MONTH,1,GETDATE())))+'.'+'01'
SELECT curmmlastday=CONVERT(CHAR(10),DATEADD(DAY,-1,@tmpstr),102) --当月最后一天
END