天天看点

SQL中时间相关函数

时间格式转化 函数:DATE()

命令格式:DATE(datetime)

用途:将datetime的格式转化为YYYY-MM-DD

参数说明:

时间格式转化 函数:DATETIME()

命令格式:DATEtime(datetime)

用途:将datetime的格式转化为YYYY-MM-DD HH:MM:SS

参数说明:

取现在的时间 函数:GETDATE()

命令格式:

GETDATE()

用途:取当时的时间 取出来的时间格式为:yyyy-mm-dd hh-mm-ss

参数说明:GETDATE后面的括号内为空

说明:取出来的是长日期格式,如需进行加减计算注意需要计算的日期的相关格式

案例1:取现在的时间

select GETDATE();
>2021-06-16 14:32:52
           

案例2:条件判断近7天

where date(time) between dateadd(getdate(),-7,'dd') and GETDATE()
           

对时间数据进行指定的单位和幅度修改 函数: DATEADD()

命令格式:

dateadd(datetime, delta, datepart)

用途:

按照指定的单位和幅度修改datetime的值

参数说明:

● datetime:datetime类型,日期值。若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。

● delta:bigint类型,修改幅度。若输入为string类型或double型会隐式转换到biging类型后参与运算,其他类型会引发异常。若delta大于0,加;否则减。

● datepart:string类型常量, 修改单位,,支持格式对天的修改 “dd” , 对月的修改 “mm”,对年的修改 “yyyy” ,对小时修改“hh”,对分钟修改“mi”,对秒修改“ss” ,此外也支持扩展的日期格式, 年-“year”, 月-“month”或”mon”, 日-“day”, 小时-“hour”。 非常量、不支持的格式会或其它类型抛异常。

返回值:

返回修改后的结果,datetime类型。若任一输入参数为NULL,返回NULL。

备注:

按照指定的单位增减delta时导致的对更高单位的进位或退位,年、月、时、分、秒分别按照10进制、12进制、24进制、60进制、60进制计算。当delta的单位是月时,计算规则如下:若datetime的月部分在增加delta值之后不造成day溢出,则保持day值不变,否则把day值设置为结果月份的最后一天。

示例:

●  加一天:dateadd(trans_date, 1, 'dd') 
●  减一天:dateadd(trans_date, -1, 'dd') 
●  加二十个月:dateadd(trans_date, 20, 'mm') 
    若trans_date = '2005-02-28 00:00:00',  dateadd(transdate, 1, 'mm') = '2005-03-28 00:00:00' 
    若trans_date = '2005-01-29 00:00:00', dateadd(transdate, 1, 'mm') = '2005-02-28 00:00:00' 
    若trans_date = '2005-03-30 00:00:00', dateadd(transdate, -1, 'mm') = '2005-02-28 00:00:00' 
           

计算两个时间的差值,并转换成指定的单位 函数: DATEDIFF()

命令格式:

datediff(datetime1, datetime2, datepart)

用途:

计算两个时间的差值,并转换成指定的单位,如:秒。

参数说明:

● datetime1 , datetime2: datetime类型,被减数和减数,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。

● datepart: string类型常量,修改单位,yyyy、mm、dd、hh、mi、ss中的一个,指定时间差值的单位,也支持扩展的日期格式, 年-“year”, 月-“month”或”mon”, 日-“day”, 小时-“hour”。。若datepart不符合指定的几种pattern或者其它类型则会发生异常。

返回值:

返回时间差值,int类型。任一输入参数是NULL,返回NULL。

备注:

计算时会按照datepart切掉低单位部分,然后再计算结果。

datediff 的前两个参数必须是datetime格式,不能是date格式。

示例:

若start = ‘2005-12-31 23:59:59’, end = ‘2006-01-01 00:00:00’: 
? datediff(end, start, 'dd') = 1 
? datediff(end, start, 'mm') = 1 
? datediff(end, start, 'yyyy') = 1 
? datediff(end, start, 'hh') = 1 
? datediff(end, start, 'mi') = 1 
? datediff(end, start, 'ss') = 1