Skip to content

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