日期時間函數__函數_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-阿裏雲