SQL 常⽤函数整理_⽇期函数(⼀)
SQL⽇期函数
1、DATEADD
函数作⽤:按照指定的单位datepart和幅度delta修改date的值。
语法⽰例:dateadd(datetime date, bigint delta, string datepart)
参数说明:
date:Datetime类型,⽇期值。若输⼊为String类型会隐式转换为Datetime类型后参与运算,其它类型抛异常。
delta:Bigint类型,修改幅度。若输⼊为String类型或Double型会隐式转换到Bigint类型后参与运算,其他类型会引发异常。若delta⼤于0,则增,否则减。
datepart:String类型常量。此字段的取值遵循String与Datetime类型转换的约定,即yyyy表⽰年,mm表⽰⽉。
使⽤⽰例:
2、DATEDIFF
函数作⽤:计算两个时间date1、date2在指定时间单位datepart的差值。
语法⽰例:datediff(datetime date1, datetime date2, string datepart)
参数说明:
datet1、date2:Datetime类型,被减数和减数,若输⼊为String类型会隐式转换为Datetime类型后参与运算,其它类型抛异常。 datepart:String类型常量。⽀持扩展的⽇期格式。若datepart不符合指定格式或者其它类型则会发⽣异常。
使⽤⽰例:
3、DATEPART
函数作⽤:提取⽇期date中指定的时间单位datepart的值。
语法⽰例:datepart(datetime date, string datepart)
参数说明:
date:Datetime类型,若输⼊为String类型会隐式转换为Datetime类型后参与运算,其它类型抛异常。
datepart:String类型常量,⽀持扩展的⽇期格式。若datepart不符合指定格式或者其它类型则会发⽣异常。
使⽤⽰例:若trans_date = 2005-02-28 00:00:00:dateadd(trans_date, 1, 'dd') = 2005-03-01 00:00:00-- 加⼀天,结果超出当年2⽉份的最后⼀天,实际值为下个⽉的第⼀天dateadd(trans_date, -1, 'dd') = 2005-02-27 00:00:00-- 减⼀天dateadd(trans_date, 20, 'mm') = 2006-10-28 00:00:00-- 加20个⽉,⽉份溢出,年份加1若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-- 2005年2⽉没有29⽇,⽇期截取⾄当⽉最后⼀天若trans_date = 2005-03-30 00:00:00, dateadd(transdate, -1, 'mm') = 2005-02-28 00:00:00
1
2
3
4
5
6
7
8
9
1011若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 datediff('2013-05-31 13:00:00', '2013-05-31 12:30:00', 'ss') = 1800 datediff('2013-05-31 13:00:00', '2013-05-31 12:30:00', 'mi') = 30若start = 2018-06-04 19:33:23.234,end = 2018-06-04 19:33:23.250 含毫秒的⽇期不属于标准Datetime 式样,不能直接隐式转换,此处需进⾏显⽰转换: datediff(to_date('2018-06-04 19:33:23.250', 'yyyy-MM-dd hh:mi:ss.ff3'),to_date('2018-06-04 19:33:23.234', 'yyyy-MM-dd hh:mi:ss.ff3') , 'ff3') = 16
1
2
3
4
5
6
7
8
9
10
11datepart('2013-06-08 01:10:00', 'yyyy') = 2013datepart('2013-06-08 01:10:00', 'mm') = 6
1
2
4、DATETRUNC
函数作⽤:返回⽇期date被截取指定时间单位datepart后的⽇期值。
语法⽰例:datetrunc (datetime date, string datepart)
参数说明:date:Datetime类型,若输⼊为String类型会隐式转换为Datetime类型后参与运算,其它类型抛异常。
datepart:String类型常量,⽀持扩展的⽇期格式。若datepart不符合指定格式或者其它类型则会发⽣异常。
使⽤⽰例:
5、FROM_UNIXTIME
函数作⽤:将数字型的unix时间⽇期值unixtime转为⽇期值。
语法⽰例:from_unixtime(bigint unixtime)
参数说明:unixtime:Bigint类型,秒数,unix格式的⽇期时间值,若输⼊为String、Double、Decimal类型会隐式转换为Bigint后参与运算。
使⽤⽰例:`from_unixtime(123456789) = 1973-11-30 05:33:09
datediff是字符型函数6、GETDATE
函数作⽤:获取当前系统时间。使⽤东⼋区时间作为MaxCompute标准时间。
语法⽰例:getdate() 使⽤⽰例:select getdate() from dual;
7、ISDATE
函数作⽤:判断⼀个⽇期字符串能否根据对应的格式串转换为⼀个⽇期值,如果转换成功,返回TRUE,否则返回FALSE。
语法⽰例:isdate(string date, string format)
参数说明:
date:String格式的⽇期值,若输⼊为Bigint、Double、Decimal或Datetime类型,会隐式转换为String类型后参与运算,其它类型报异常。
format:String类型常量,不⽀持⽇期扩展格式。其它类型或不⽀持的格式会抛异常。如果format中出现多余的格式串,则只取第⼀个格式串对应的⽇期数值,其余的会被视为分隔符。如isdate(“1234-yyyy”, “yyyy-yyyy”),会返回TRUE。
8、LASTDAY
函数作⽤:取date当⽉的最后⼀天,截取到天,时分秒部分为00:00:00。
语法⽰例:lastday(datetime date)
参数说明:date:Datetime类型,若输⼊为String 类型,会隐式转换为Datetime类型后参与运算,其它类型报异常。
9、TO_DATE
函数作⽤:将⼀个format格式的字符串date转成⽇期值。
语法⽰例:to_date(string date, string format)
参数说明:
date:String类型,要转换的字符串格式的⽇期值,若输⼊为Bigint、Double、Decimal或者Datetime类型,会隐式转换为String类型后参与运算,为其它类型则抛异常,为空串时抛异常。
format:String类型常量,⽇期格式。⾮常量或其他类型会引发异常。format不⽀持⽇期扩展格式,其他字符作为⽆⽤字符在解析时忽略。
format参数⾄少包含yyyy,否则引发异常,如果format中出现多余的格式串,则只取第⼀个格式串对应的⽇期数值,其余的会被视为分隔符。如to_date(“1234-2234”, “yyyy-yyyy”) 会返回1234-01-01 00:00:00。
使⽤⽰例:datetrunc('2011-12-07 16:28:46', 'yyyy') = 2011-01-01 00:00:00datetrunc('2011-12-07 16:28:46', 'month') = 2011-12-01 00:00:00datetrunc('2011-12-07 16:28:46', 'DD') = 2011-12-07 00:00:00
1
2
3
4
10、TO_CHAR
函数作⽤:将⽇期类型date按照format指定的格式转成字符串。
语法⽰例:to_char(datetime date, string format)
参数说明:date:Datetime类型,要转换的⽇期值,若输⼊为String类型,会隐式转换为Datetime类型后参与运算,其它类型抛异常。 format:String类型常量。⾮常量或其他类型会引发异常。format中的⽇期格式部分会被替换成相应的数据,其它字符直接输出。 使⽤⽰例:
11、WEEKDAY
函数说明:返回date⽇期当前周的第⼏天。
语法⽰例:weekday (datetime date)
参数说明:date:Datetime类型,若输⼊为String类型,会隐式转换为Datetime类型后参与运算,其它
类型抛异常。
12、WEEKOFYEAR
函数作⽤:返回⽇期date位于那⼀年的第⼏周。周⼀作为⼀周的第⼀天。
语法⽰例:weekofyear(datetime date)
参数说明:date:Datetime类型⽇期值,若输⼊为String类型,会隐式转换为Datetime类型后参与运算,其它类型抛异常。 使⽤⽰例:select weekofyear(to_date("20141229", "yyyymmdd")) from dual;
-虽然20141229属于2014年,但是这⼀周的⼤多数⽇期是在2015年,因此返回结果为1,表⽰是2015年的第⼀周。
select weekofyear(to_date("20141231", "yyyymmdd")) from dual ;--返回结果为1。
select weekofyear(to_date("20151229", "yyyymmdd")) from dual ;--返回结果为53。
如有不当之处,请指正。to_date('阿⾥巴巴2010-12*03', '阿⾥巴巴yyyy-mm*dd') = 2010-12-03 00:00:00to_date('20080718', 'yyyymmdd') = 2008-07-18 00:00:00to_date('200807182030','yyyymmd
dhhmi') = 2008-07-18 20:30:00to_date('2008718', 'yyyymmdd')-- 格式不符合,引发异常to_date('阿⾥巴巴2010-12*3', '阿⾥巴巴yyyy-mm*dd')-- 格式不符合,引发异常to_date('2010-24-01', 'yyyy')-- 格式不符合,引发异常
1
2
3
4
5
6
7
8
9to_char('2010-12-03 00:00:00', '阿⾥⾦融yyyy-mm*dd') = '阿⾥⾦融2010-12*03'to_char('2008-07-18
00:00:00', 'yyyymmdd') = '20080718' to_char('阿⾥巴巴2010-12*3', '阿⾥巴巴yyyy-mm*dd') -- 引发异常to_char('2010-24-01', 'yyyy') -- 会引发异常to_char('2008718', 'yyyymmdd') -- 会引发异常
1
2
3
4
5
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论