502
iPhone_iPad_Mac_手机_平板_苹果apple
日期时间函数__函数_SQL语法参考_云数据库 OceanBase-阿里云
日期时间函数主要用来显示有关日期和时间的信息。
CURRENT_TIME()和CURRENT_TIMESTAMP()
注意:
- CURRENT_TIME()和 CURRENT_TIMESTAMP()和 OceanBase 0.5 已有实现不一致,请格外留意。
- current_time()和 current_timestamp()可以传入 0-6 的数字参数,表示秒后的小数点精度。
CURRENT_TIME()和CURRENT_TIMESTAMP()这两个函数用于获取系统当前时间,但返回格式有区别。
CURRENT_TIME()是取当前时间,但不包括日期,返回格式为“HH:MI:SS”。
CURRENT_TIMESTAMP()则取当前日期+时间,返回格式为“YYYY-MM-DD HH:MI:SS”。
current_time()和current_timestamp()可以传入0-6的数字参数,表示秒后的小数点精度。
Oceanbase>SELECT CURRENT_TIME(), CURRENT_TIMESTAMP();
+----------------+---------------------+
| CURRENT_TIME() | CURRENT_TIMESTAMP() |
+----------------+---------------------+
| 13:53:28 | 2016-03-14 13:53:28 |
+----------------+---------------------+
1 row in set (0.01 sec)
#可以支持传入秒后的小数位精度参数
Oceanbase>select CURRENT_TIME(1);
+-----------------+
| CURRENT_TIME(1) |
+-----------------+
| 13:54:00.3 |
+-----------------+
1 row in set (0.01 sec)
#传入的精度范围是0-6,否则报错,错误码1426 (42000)
Oceanbase>select CURRENT_TIME(7);
ERROR 1426 (42000): Too big precision 7 specified for column 'current_time'. Maximum is 6.
CURTIME()
CURTIME() 是CURRENT_TIME(),CURRENT_TIME的同义词。
Oceanbase>select curtime(), current_time(), current_time;
+-----------+----------------+--------------+
| curtime() | current_time() | current_time |
+-----------+----------------+--------------+
| 14:45:37 | 14:45:37 | 14:45:37 |
+-----------+----------------+--------------+
1 row in set (0.00 sec)
CURRENT_DATE()
CURRENT_DATE() 返回当前日期,以‘YYYY-MM-DD’或者 YYYYMMDD的形式显示。以何种形式显示取决于函数中的内容是字符串还是数值。
例如:
Oceanbase>select current_date, current_date+5;
+--------------+----------------+
| current_date | current_date+5 |
+--------------+----------------+
| 2016-03-14 | 20160319 |
+--------------+----------------+
1 row in set (0.01 sec)
CURDATE()
CURDATE()是CURRENT_DATE(), CURRENT_DATE的同义词。
Oceanbase>select curdate(), current_date(), current_date;
+------------+----------------+--------------+
| curdate() | current_date() | current_date |
+------------+----------------+--------------+
| 2016-03-14 | 2016-03-14 | 2016-03-14 |
+------------+----------------+--------------+
1 row in set (0.01 sec)
DATE_ADD(date, INTERVAL expr unit)
这个函数用来执行时间的算术计算。将date值作为基数,对expr进行相加计算,expr的值允许为负数。DATE_ADD()计算时间值是否使用夏令时,由操作系统系统根据其内部配置和相应时区设定来决定。
date参数类型只能为Time类型(DATETIME, TIMESTAMP等)或者代表时间的一个字符串,不接受其它类型。
date参数的期望日期类型为“YYYY-MM-DD HH:MM:SS.SSSSSS”格式。MySQL允许解析日期类型字符串时允许“不严格”语法,如果一个字符串中包含数字和非数字,MySQL将解析出被非数字隔断的数字序列作为时间序列,依次赋给年月日。例如“Ywwe1990d07 09,12:45-08&900”该字符串和“1990-07-09 12:45:08.900”在表示时间值上是等价的。在OceanBase 1.0实现“严格语法”,对非法日期类型进行报错处理,比如用户插入“abc”这种非法日期时做报错处理。
在date字符串中,日期部分是必须的,而时间部分是可以缺省的。 例如“1990-07-09”是合法的,这种情况下后面的时间部分将默认填充为0,其等价为“1990-07-09 00:00:00.000000”;而“1990-07”和“1990”这样的格式都是非法的。
目前date_add在解析date字符串的时候还不支持例如“990309”这种TIMESTAMP类型字符串。
OceanBase中的其它系统函数调用结果可以作为date参数进行计算。
OceanBase不支持对两位数的年份进行模糊匹配,例如12年在MySQL中匹配为2012年,而在OceanBase中就代表12年。
expr的值允许为负,对一个负值相加功能等同于对一个正值相减。允许系统函数的调用结果作为该参数,但是所有结果都将作为字符串结果。
unit为单位,支持MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR、SECOND_MICROSECOND、MINUTE_MICROSECOND、MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND、HOUR_MINUTE、DAY_MICROSECOND、DAY_SECOND、DAY_MINUTE、DAY_HOUR和YEAR_MONTH。其中QUARTER代表季度。
unit为复合单位时,expr必须加单引号。
在MySQL命令行客户端中,当单行显示过长,造成阅读困难时,可在SELECT结尾使用“G”,将查询结果垂直排列。
Oceanbase>SELECT DATE_ADD(now(), INTERVAL 5 DAY),
-> DATE_ADD('2014-01-10', INTERVAL 5 MICROSECOND),
-> DATE_ADD('2014-01-10', INTERVAL 5 SECOND),
-> DATE_ADD('2014-01-10', INTERVAL 5 MINUTE),
-> DATE_ADD('2014-01-10', INTERVAL 5 HOUR),
-> DATE_ADD('2014-01-10', INTERVAL 5 DAY),
-> DATE_ADD('2014-01-10', INTERVAL 5 WEEK),
-> DATE_ADD('2014-01-10', INTERVAL 5 MONTH),
-> DATE_ADD('2014-01-10', INTERVAL 5 QUARTER),
-> DATE_ADD('2014-01-10', INTERVAL 5 YEAR),
-> DATE_ADD('2014-01-10', INTERVAL '5.000005' SECOND_MICROSECOND),
-> DATE_ADD('2014-01-10', INTERVAL '05:05.000005' MINUTE_MICROSECOND),
-> DATE_ADD('2014-01-10', INTERVAL '05:05' MINUTE_SECOND),
-> DATE_ADD('2014-01-10', INTERVAL '05:05:05.000005' HOUR_MICROSECOND),
-> DATE_ADD('2014-01-10', INTERVAL '05:05:05' HOUR_SECOND),
-> DATE_ADD('2014-01-10', INTERVAL '05:05' HOUR_MINUTE),
-> DATE_ADD('2014-01-10', INTERVAL '01 05:05:05.000005' DAY_MICROSECOND),
-> DATE_ADD('2014-01-10', INTERVAL '01 05:05:05' DAY_SECOND),
-> DATE_ADD('2014-01-10', INTERVAL '01 05:05' DAY_MINUTE),
-> DATE_ADD('2014-01-10', INTERVAL '01 05' DAY_HOUR),
-> DATE_ADD('2014-01-10', INTERVAL '1-01' YEAR_MONTH) G
*************************** 1. row ***************************
DATE_ADD(now(), INTERVAL 5 DAY): 2016-03-19 13:56:45
DATE_ADD('2014-01-10', INTERVAL 5 MICROSECOND): 2014-01-10 00:00:00.000005
DATE_ADD('2014-01-10', INTERVAL 5 SECOND): 2014-01-10 00:00:05
DATE_ADD('2014-01-10', INTERVAL 5 MINUTE): 2014-01-10 00:05:00
DATE_ADD('2014-01-10', INTERVAL 5 HOUR): 2014-01-10 05:00:00
DATE_ADD('2014-01-10', INTERVAL 5 DAY): 2014-01-15
DATE_ADD('2014-01-10', INTERVAL 5 WEEK): 2014-02-14 00:00:00
DATE_ADD('2014-01-10', INTERVAL 5 MONTH): 2014-06-10
DATE_ADD('2014-01-10', INTERVAL 5 QUARTER): 2015-04-10 00:00:00
DATE_ADD('2014-01-10', INTERVAL 5 YEAR): 2019-01-10
DATE_ADD('2014-01-10', INTERVAL '5.000005' SECOND_MICROSECOND): 2014-01-10 00:00:05.000005
DATE_ADD('2014-01-10', INTERVAL '05:05.000005' MINUTE_MICROSECOND): 2014-01-10 00:05:05.000005
DATE_ADD('2014-01-10', INTERVAL '05:05' MINUTE_SECOND): 2014-01-10 00:05:05
DATE_ADD('2014-01-10', INTERVAL '05:05:05.000005' HOUR_MICROSECOND): 2014-01-10 05:05:05.000005
DATE_ADD('2014-01-10', INTERVAL '05:05:05' HOUR_SECOND): 2014-01-10 05:05:05
DATE_ADD('2014-01-10', INTERVAL '05:05' HOUR_MINUTE): 2014-01-10 05:05:00
DATE_ADD('2014-01-10', INTERVAL '01 05:05:05.000005' DAY_MICROSECOND): 2014-01-11 05:05:05.000005
DATE_ADD('2014-01-10', INTERVAL '01 05:05:05' DAY_SECOND): 2014-01-11 05:05:05
DATE_ADD('2014-01-10', INTERVAL '01 05:05' DAY_MINUTE): 2014-01-11 05:05:00
DATE_ADD('2014-01-10', INTERVAL '01 05' DAY_HOUR): 2014-01-11 05:00:00
DATE_ADD('2014-01-10', INTERVAL '1-01' YEAR_MONTH): 2015-02-10
1 row in set (0.01 sec)
日期计算还支持 INTERVARL 后面直接跟上加减(+/-)运算符形式。
date + INTERVAL expr unit
date - INTERVAL expr unit
Oceanbase>SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND,'2005-01-01' - INTERVAL 1 SECONDG;
*************************** 1. row ***************************
'2008-12-31 23:59:59' + INTERVAL 1 SECOND: 2009-01-01 00:00:00
'2005-01-01' - INTERVAL 1 SECOND: 2004-12-31 23:59:59
1 row in set (0.01 sec)
DATE_FORMAT(date, format)
DATE_FORMAT()是STR_TO_DATE()的逆函数,DATE_FORMAT()接受一个时间值date,将其按format的格式格式化成一个时间字符串。
date参数给出了被格式化的时间值,date只接受time类型和时间字符串作为参数,其具体描述参考DATE_ADD()的date参数描述。
format的格式如下表所示。
格式 | 含义 | 返回格式 |
%a | 星期。 | Sun..Sat |
%b | 月份的缩写名称。 | Jan,…,Dec |
%c | 月份,数字形式。 | 1,…,12 |
%D | 带有英语后缀的日期。 | 1st,2nd,…,31st |
%d | 日期,数字形式。 | 01,…,31 |
%e | 日期,数字形式。 | 1,…,31 |
%f | 微秒。 | 000000,…,999999 |
%H | 小时。 | 00,…,23 |
%h | 小时。 | 01,…,12 |
%I | 小时。 | 01,…,12 |
%i | 分钟。 | 00,…,59 |
%j | 一年中的第几天。 | 000,…,366 |
%k | 小时。 | 0,…,23 |
%l | 小时。 | 01,…,12 |
%M | 月份名称。 | January,…,December |
%m | 月份,数字形式。 | 01,…,12 |
%p | 上午或下午。 | AM,PM |
%r | 12小时制时间。 | hh:mm:ss AM/PM |
%S | 秒。 | 00,…,59 |
%s | 秒。 | 00,…,59 |
%T | 24小时制时间。 | hh:mm:ss |
%U | 一年中的第几周,其中周日为每周的第一天。 | 00,…,53 |
%u | 一年中的第几周,其中周一为每周的第一天。 | 00,…,53 |
%V | 一年中的第几周,其中周日为每周的第一天, 和%X同时使用。 说明:在一年中的第一周或者最后一周产生跨年时 (以2014-01-01 星期三为例), %U和%u时,该天为2014年的第00周, %V和%v时为2013年的第52周。 | 01,…,53 |
%v | 一年中的第几周,其中周一为每周的第一天, 和%x同时使用。 | 01,…,53 |
%W | 星期。 | Sunday,…,Saturday |
%w | 一周中的第几天。 | 0=Sunday,…,6=Saturday |
%X | 某一周所属的年份,其中周日为每周的第一天, 数字形式,4位数,和%V同时使用。 | - |
%x | 某一周所属的年份,其中周一为每周的第一天, 数字形式,4位数,和%v同时使用。 | - |
%Y | 年,用四位数字表示。 | - |
%y | 年,用两位数字表示。 | - |
%% | 文字字符,输出一个%。 | - |
注:“-”表示无。
Oceanbase>SELECT DATE_FORMAT('2014-01-01', '%Y-%M-%d'),
DATE_FORMAT('2014-01-01', '%X-%V'),DATE_FORMAT('2014-01-01', '%U') G
*************************** 1. row ***************************
DATE_FORMAT('2014-01-01', '%Y-%M-%d'): 2014-January-01
DATE_FORMAT('2014-01-01', '%X-%V'): 2013-52
DATE_FORMAT('2014-01-01', '%U'): 00
DATE_SUB(date, INTERVAL expr unit)
对时间进行算数计算。将date作为基数,对expr进行相减计算,expr允许为负,结果相当于做取反做加法。
参数说明参考DATE_ADD()。
Oceanbase>SELECT DATE_SUB('2014-01-10', INTERVAL 5 HOUR),
DATE_SUB('2014-01-10', INTERVAL '05:05:05.000005' HOUR_MICROSECOND)G;
*************************** 1. row ***************************
DATE_SUB('2014-01-10', INTERVAL 5 HOUR): 2014-01-09 19:00:00
DATE_SUB('2014-01-10', INTERVAL '05:05:05.000005' HOUR_MICROSECOND): 2014-01-09 18:54:54.999995
1 row in set (0.00 sec)
EXTRACT(unit FROM date)
提取date表达式中被unit指定的时间组成单元的值。
参数参考DATE_ADD()。
EXTRACT函数返回的结果为BIGINT类型。
对于MICROSECOND~YEAR这种单一单元(Single unit),将直接返回对应的int值。
unit为WEEK返回的是date表达式中指定的日期在该年所对应的周数, 而 OceanBase将一年的第一个星期日作为该年第一周的开始,如果某年的第一个星期日不是1月1日,那么该星期日之前的日期处于第0周。例如,2013年第一个星期日是1月6日,所以SELECT EXTRACT(WEEK FROM ‘2013-01-01’)返回的结果为0,而SELECT EXTRACT(WEEK FROM ‘2013-01-06’)返回的结果是1。
对于SECOND_MICROSECOND这种复合单元(combinative unit),OceanBase将各个值拼接在一起作为返回值。例如,SELECT EXTRACT(YEAR_MONTH FROM '2012-03-09')返回的结果将是“201203”。
Oceanbase>SELECT EXTRACT(WEEK FROM '2013-01-01'),
EXTRACT(WEEK FROM '2013-01-06'),
EXTRACT(YEAR_MONTH FROM '2012-03-09'),
EXTRACT(DAY FROM NOW())G;
*************************** 1. row ***************************
EXTRACT(WEEK FROM '2013-01-01'): 0
EXTRACT(WEEK FROM '2013-01-06'): 1
EXTRACT(YEAR_MONTH FROM '2012-03-09'): 201203
EXTRACT(DAY FROM NOW()): 18
1 row in set (0.00 sec)
NOW([fsp])
和CURRENT_TIMESTAMP()函数同义。用于获取系统当前时间,精确到秒,格式为“YYYY-MM-DD HH:MI:SS”。
now()函数的括号里可以传入0-6数字参数,表示秒后面的小数点精度,默认now()相当于now(0) 。
注意: now()函数的括号里可以传入 0-6 数字参数,表示秒后面的小数点精度,默认now()相当于 now(0),OB 1.0 版本先实现 now()带参数的功能。
为了兼容 MySQL,NOW()函数功能在OB 1.0里将与OB 0.5 中不兼容,OB 0.5 版本中的 NOW()相当于OB 1.0里的 NOW(6)
例子:
Oceanbase>SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2016-03-14 14:00:02 |
+---------------------+
1 row in set (0.01 sec)
Oceanbase>select now(0);
+---------------------+
| now(0) |
+---------------------+
| 2016-03-14 14:00:35 |
+---------------------+
1 row in set (0.01 sec)
Oceanbase>select now(1);
+-----------------------+
| now(1) |
+-----------------------+
| 2016-03-14 14:00:37.8 |
+-----------------------+
1 row in set (0.01 sec)
Oceanbase>select now(2);
+------------------------+
| now(2) |
+------------------------+
| 2016-03-14 14:00:39.67 |
+------------------------+
1 row in set (0.00 sec)
Oceanbase>select now(3);
+-------------------------+
| now(3) |
+-------------------------+
| 2016-03-14 14:00:41.671 |
+-------------------------+
1 row in set (0.01 sec)
Oceanbase>select now(7);
ERROR 1426 (42000): Too big precision 7 specified for column 'now'. Maximum is 6.
STR_TO_DATE(str,format)
STR_TO_DATE函数获取一个字符串str和一个格式字符串format。若格式字符串包含日期和时间部分,则 STR_TO_DATE()返回一个DATETIME值,若该字符串只包含日期部分或时间部分,则返回一个DATE或TIME值。
str所包含的日期、时间或日期时间值应该在format指示的格式中被给定。若str包含一个非法日期、时间或日期时间值,则 STR_TO_DATE()返回NULL。同时,一个非法值会引起警告。
format的格式如下表所示。
格式 | 含义 | 返回格式 |
%b | 月份的缩写名称。 | Jan,…,Dec |
%c | 月份,数字形式。 | 1,…,12 |
%D | 带有英语后缀的日期。 | 1st,2nd,…,31st |
%d | 日期,数字形式。 | 01,…,31 |
%e | 日期,数字形式。 | 1,…,31 |
%f | 微秒。 | 000000,…,999999 |
%H | 小时。 | 00,…,23 |
%h | 小时。 | 01,…,12 |
%I | 小时。 | 01,…,12 |
%i | 分钟。 | 00,…,59 |
%k | 小时。 | 0,…,23 |
%l | 小时。 | 01,…,12 |
%M | 月份名称。 | January,…,December |
%m | 月份,数字形式。 | 01,…,12 |
%p | 上午或下午。 | AM,PM |
%r | 12小时制时间。 | hh:mm:ss AM/PM |
%S | 秒。 | 00,…,59 |
%s | 秒。 | 00,…,59 |
%T | 24小时制时间。 | hh:mm:ss |
%Y | 年,用四位数字表示。 | - |
注:“-”表示无。
Oceanbase>SELECT STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r');
+-----------------------------------------------------+
| STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r') |
+-----------------------------------------------------+
| 2014-01-01 17:05:05 |
+-----------------------------------------------------+
1 row in set (0.00 sec)
TIME_TO_USEC(date)
将OceanBase的内部时间类型转换成一个微秒数计数。表示date所指的时刻距离“1970-01-01 00:00:00”的微秒数,这是一个UTC时间,不带时区信息。
date为被计算的时刻,且这个时刻附带时区信息,而时区信息是用户当前系统设置的时区信息。该参数为TIMESTAMP类型或者时间格式的字符串。
TIME_TO_USEC能够接受其它函数的调用结果作为参数,但是其的结果类型必须为TIMESTAMP或者时间格式的字符串。
该函数返回值为微秒计数,返回类型为INT。
Oceanbase>SELECT TIME_TO_USEC('2014-03-25'), TIME_TO_USEC(now());
+----------------------------+---------------------+
| TIME_TO_USEC('2014-03-25') | TIME_TO_USEC(now()) |
+----------------------------+---------------------+
| 1395676800000000 | 1395735415207794 |
+----------------------------+---------------------+
1 row in set (0.00 sec)
USEC_TO_TIME(usec)
该函数为TIME_TO_USEC(date)的逆函数,表示“1970-01-01 00:00:00”增加usec后的时间,且附带了时区信息。例如在东八区调用该函数“USEC_TO_TIME(1)”,返回值为“1970-01-01 08:00:01”。
usec为一个微秒计数值。
返回值为TIMESTAMP类型。
Oceanbase>SELECT USEC_TO_TIME(1);
+----------------------------+
| USEC_TO_TIME(1) |
+----------------------------+
| 1970-01-01 08:00:00.000001 |
+----------------------------+
1 row in set (0.00 sec)
UNIX_TIMESTAMP(),UNIX_TIMESTAMP(date)
若无参数调用,则返回一个Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数。若用date来调用UNIX_TIMESTAMP(),它会将参数值以'1970-01-01 00:00:00' GMT后的秒数的形式返回。date可以是一个DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD 或YYYMMDD格式的数字。
Oceanbase>SELECT UNIX_TIMESTAMP();
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
| 1427176668 |
+------------------+
1 row in set (0.00 sec)
Oceanbase>SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00')
+---------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00') |
+---------------------------------------+
| 875974980 |
+---------------------------------------+
1 row in set (0.00 sec)
DATEDIFF(expr1,expr2)
DATEDIFF()返回起始时间expr1和结束时间expr2之间的天数。expr1和expr2为日期或日期时间表达式。计算中只用到这些值的日期部分。
此函数必须跟两个参数,多于或少于两个参数,系统执行都将参数个数不正确错误。
Oceanbase>select datediff('2015-06-19','1994-12-17'), datediff('2015-06-19','1998-06-27 10:10:10'), datediff(now(), '2014-01-02')G;
*************************** 1. row ***************************
datediff('2015-06-19','1994-12-17'): 7489
datediff('2015-06-19','1998-06-27 10:10:10'): 6201
datediff(now(), '2014-01-02'): 533
1 row in set (0.00 sec)
TIMEDIFF(expr1,expr2)
TIMEDIFF()返回起始时间expr1和结束时间expr2之间的时间。expr1和expr2为时间或日期时间表达式,两个的类型必须一样。
TIMEDIFF()返回结果限于时间值允许的范围。另外,你也可以使用TIMESTAMPDIFF()和UNIX_TIMESTAMP()函数,这两个函数的范围值为整数类型。
Oceanbase>select timediff(now(), '2015-06-06 11:11:22'), timediff('2015-06-06 12:12:12', '2014-06-05 11:11:11')G;
*************************** 1. row ***************************
timediff(now(), '2015-06-06 11:11:22'): 838:59:59
timediff('2015-06-06 12:12:12', '2014-06-05 11:11:11'): 838:59:59
1 row in set (0.01 sec)
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
返回日期或日期时间表达式datetime_expr1和datetime_expr2之间的整数差。其结果的单位由unit参数给出。unit的值为:MICROSECOND(mircoseconds)、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER,以及YEAR.
Oceanbase>select timestampdiff(second,now(), '2011-01-01 11:11:11'), timestampdiff(second, '2011-01-01 11:11:11', now())G;
*************************** 1. row ***************************
timestampdiff(second,now(), '2011-01-01 11:11:11'): -140843995
timestampdiff(second, '2011-01-01 11:11:11', now()): 140843995
1 row in set (0.00 sec)
PERIOD_DIFF(p1,p2)
返回周期p1和p2之间的月数。p1和p2的格式应该为 YYMM或YYYYMM。注意周期参数p1和p2不是日期值。
Oceanbase>select period_diff(20150702, 20790503), period_diff(150702, 790503);
+---------------------------------+-----------------------------+
| period_diff(20150702, 20790503) | period_diff(150702, 790503) |
+---------------------------------+-----------------------------+
| -76777 | -76777 |
+---------------------------------+-----------------------------+
1 row in set (0.00 sec)
TO_DAYS(date)
给定一个日期 date,返回一个天数(从年份为 0 开始的天数)。
Oceanbase>SELECT TO_DAYS('2015-11-04'), TO_DAYS('20151104');
+-----------------------+---------------------+
| TO_DAYS('2015-11-04') | TO_DAYS('20151104') |
+-----------------------+---------------------+
| 736271 | 736271 |
+-----------------------+---------------------+
1 row in set (0.01 sec)
TO_DAYS()不用于阳历出现(1582)前的值,原因是当日历改变时,遗失的日期不会被考虑在内。
日期中的二位数年份值转化为四位。例如,‘2015-11-04’和‘15-11-04’被视为同样的日期。
对于0日期‘0000-00-00’在日期中被认为是不合法的。
FROM_DAYS(N)
给定一个天数N,返回一个DATE值。
Oceanbase>SELECT FROM_DAYS(736271), FROM_DAYS(700000);
+-------------------+-------------------+
| FROM_DAYS(736271) | FROM_DAYS(700000) |
+-------------------+-------------------+
| 2015-11-04 | 1916-07-15 |
+-------------------+-------------------+
1 row in set (0.00 sec)
使用 FROM_DAYS()处理古老日期时,务必谨慎,它不用于处理阳历日历出现(1582)前的日期。
FROM_UNIXTIME(unix_timestamp[,format])
FROM_UNIXTIME(unix_timestamp) , FROM_UNIXTIME(unix_timestamp,format)
返回'YYYY-MM-DD HH:MM:SS'或 YYYYMMDDHHMMSS 格式值的 unix_timestamp 参数表示,具体格式取决于该函数是否用在字符串中或是数字语境中。
若 format 已经给出,则结果的格式是根据 format 字符串而定。 format可以包含同 DATE_FORMAT() 函数输入项列表中相同的说明符。
格式 | 说明 |
---|---|
%a | 工作日的缩写名称 (Sun..Sat) |
%b | 月份的缩写名称 (Jan..Dec) |
%c | 月份,数字形式(0..12) |
%D | 带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, ...) |
%d | 该月日期, 数字形式 (00..31) |
%e | 该月日期, 数字形式(0..31) |
%f | 微秒 (000000..999999) |
%H | 小时(00..23) |
%h | 小时(01..12) |
%I | 小时 (01..12) |
%i | 分钟,数字形式 (00..59) |
%j | 一年中的天数 (001..366) |
%k | 小时 (0..23) |
%l | 小时 (1..12) |
%M | 月份名称 (January..December) |
%m | 月份, 数字形式 (00..12) |
%p | 上午(AM)或下午( PM) |
%r | 时间 , 12 小时制 (小时 hh:分钟 mm:秒数 ss 后加 AM 或 PM) |
%S | 秒 (00..59) |
%s | 秒 (00..59) |
%T | 时间 , 24 小时制 (小时 hh:分钟 mm:秒数 ss) |
%U | 周 (00..53), 其中周日为每周的第一天 |
%u | 周 (00..53), 其中周一为每周的第一天 |
%V | 周 (01..53), 其中周日为每周的第一天 ; 和 %X 同 时使用 |
%v | 周 (01..53), 其中周一为每周的第一天 ; 和 %x 同 时使用 |
%W | 工作日名称 (周日..周六) |
%w | 一周中的每日 (0=周日..6=周六) |
%X | 该周的年份,其中周日为每周的第一天, 数字形式,4 位数;和%V 同时使用 |
%x | 该周的年份,其中周一为每周的第一天, 数字形式,4 位数;和%v 同时使用 |
%Y | 年份, 数字形式,4 位数 |
%y | 年份, 数字形式 (2 位数) |
%% | ‘%’文字字符 |
Oceanbase>SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x');
+---------------------------------------------------------+
| FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x') |
+---------------------------------------------------------+
| 2016 8th March 08:11:26 2016 |
+---------------------------------------------------------+
1 row in set (0.01 sec)
最后更新:2016-11-23 16:03:54
上一篇:
优先级__运算符_SQL语法参考_云数据库 OceanBase-阿里云
下一篇:
字符串函数__函数_SQL语法参考_云数据库 OceanBase-阿里云
ALIYUN::ECS::VPC__资源列表_资源编排-阿里云
建立授权关系__快速入门(调用API)_API 网关-阿里云
节点管理__集群管理_用户指南_容器服务-阿里云
获取域名列表接口__域名管理接口_Open API_HTTPDNS-阿里云
步骤 5:备案__搭建 WordPress 网站_建站教程_云服务器 ECS-阿里云
万网域名解析设置方法__网站解析_产品使用问题_云解析-阿里云
PhpSDK手册__SDK使用手册_邮件推送-阿里云
depends__服务编排文档_用户指南_容器服务-阿里云
获取角色列表__账号管理类 API_Open API 参考_企业级分布式应用服务 EDAS-阿里云
公共错误码__调用方式_API文档_批量计算-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云