MySQL之日期時間處理函數

本文給大家分享的是mysql之日期時間處理函數?,非常的詳細,也很實用,非常適合初學者,有需要的小伙伴參考下。

以下基本包含mysql所有日期時間函數

--?MySQL日期時間處理函數  --?當前日期:2017-05-12(突然發現今天512,是不是會拉防空警報)  SELECT?NOW()?FROM?DUAL;--?當前日期時間:2017-05-12?11:41:47  --?在MySQL里也存在和Oracle里類似的dual虛擬表:官方聲明純粹是為了滿足select?...?from...這一習慣問題,mysql會忽略對該表的引用。  --?那么MySQL中就不用DUAL了吧。  SELECT?NOW();--?當前日期時間:2017-05-12?11:41:55  --?除了?now()?函數能獲得當前的日期時間外,MySQL?中還有下面的函數:  SELECT?CURRENT_TIMESTAMP();--?2017-05-15?10:19:31  SELECT?CURRENT_TIMESTAMP;--?2017-05-15?10:19:51  SELECT?LOCALTIME();--?2017-05-15?10:20:00  SELECT?LOCALTIME;--?2017-05-15?10:20:10  SELECT?LOCALTIMESTAMP();--?2017-05-15?10:20:21(v4.0.6)  SELECT?LOCALTIMESTAMP;--?2017-05-15?10:20:30(v4.0.6)  --?這些日期時間函數,都等同于?now()。鑒于?now()?函數簡短易記,建議總是使用?now()來替代上面列出的函數。    SELECT?SYSDATE();--?當前日期時間:2017-05-12?11:42:03  --?sysdate()?日期時間函數跟?now()?類似,  --?不同之處在于:now()?在執行開始時值就得到了;sysdate()?在函數執行時動態得到值。  --?看下面的例子就明白了:  SELECT?NOW(),?SLEEP(3),?NOW();  SELECT?SYSDATE(),?SLEEP(3),?SYSDATE();      SELECT?CURDATE();--?當前日期:2017-05-12  SELECT?CURRENT_DATE();--?當前日期:等同于?CURDATE()  SELECT?CURRENT_DATE;--?當前日期:等同于?CURDATE()    SELECT?CURTIME();--?當前時間:11:42:47  SELECT?CURRENT_TIME();--?當前時間:等同于?CURTIME()  SELECT?CURRENT_TIME;--?當前時間:等同于?CURTIME()    --?獲得當前?UTC?日期時間函數  SELECT?UTC_TIMESTAMP(),?UTC_DATE(),?UTC_TIME()  --?MySQL?獲得當前時間戳函數:current_timestamp,?current_timestamp()  SELECT?CURRENT_TIMESTAMP,?CURRENT_TIMESTAMP();--?2017-05-15?10:32:21?|?2017-05-15?10:32:21      --?MySQL?日期時間?Extract(選取)?函數  SET?@dt?=?'2017-05-15?10:37:14.123456';  SELECT?DATE(@dt);--?獲取日期:2017-05-15  SELECT?TIME('2017-05-15?10:37:14.123456');--?獲取時間:10:37:14.123456  SELECT?YEAR('2017-05-15?10:37:14.123456');--?獲取年份  SELECT?MONTH('2017-05-15?10:37:14.123456');--?獲取月份  SELECT?DAY('2017-05-15?10:37:14.123456');--?獲取日  SELECT?HOUR('2017-05-15?10:37:14.123456');--?獲取時  SELECT?MINUTE('2017-05-15?10:37:14.123456');--?獲取分  SELECT?SECOND('2017-05-15?10:37:14.123456');--?獲取秒  SELECT?MICROSECOND('2017-05-15?10:37:14.123456');--?獲取毫秒  SELECT?QUARTER('2017-05-15?10:37:14.123456');--?獲取季度  SELECT?WEEK('2017-05-15?10:37:14.123456');--?20?(獲取周)  SELECT?WEEK('2017-05-15?10:37:14.123456',?7);--?******?測試此函數在MySQL5.6下無效  SELECT?WEEKOFYEAR('2017-05-15?10:37:14.123456');--?同week()  SELECT?DAYOFYEAR('2017-05-15?10:37:14.123456');--?135?(日期在年度中第幾天)  SELECT?DAYOFMONTH('2017-05-15?10:37:14.123456');--?5?(日期在月度中第幾天)  SELECT?DAYOFWEEK('2017-05-15?10:37:14.123456');--?2?(日期在周中第幾天;周日為第一天)  SELECT?WEEKDAY('2017-05-15?10:37:14.123456');--?0  SELECT?WEEKDAY('2017-05-21?10:37:14.123456');--?6(與dayofweek()都表示日期在周的第幾天,只是參考標準不同,weekday()周一為第0天,周日為第6天)  SELECT?YEARWEEK('2017-05-15?10:37:14.123456');--?201720(年和周)    SELECT?EXTRACT(YEAR?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(MONTH?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(DAY?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(HOUR?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(MINUTE?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(SECOND?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(MICROSECOND?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(QUARTER?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(WEEK?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(YEAR_MONTH?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(DAY_HOUR?FROM?'2017-05-15?10:37:14.123456');  SELECT?EXTRACT(DAY_MINUTE?FROM?'2017-05-15?10:37:14.123456');--?151037(日時分)  SELECT?EXTRACT(DAY_SECOND?FROM?'2017-05-15?10:37:14.123456');--?15103714(日時分秒)  SELECT?EXTRACT(DAY_MICROSECOND?FROM?'2017-05-15?10:37:14.123456');--?15103714123456(日時分秒毫秒)  SELECT?EXTRACT(HOUR_MINUTE?FROM?'2017-05-15?10:37:14.123456');--?1037(時分)  SELECT?EXTRACT(HOUR_SECOND?FROM?'2017-05-15?10:37:14.123456');--?103714(時分秒)  SELECT?EXTRACT(HOUR_MICROSECOND?FROM?'2017-05-15?10:37:14.123456');--?103714123456(日時分秒毫秒)  SELECT?EXTRACT(MINUTE_SECOND?FROM?'2017-05-15?10:37:14.123456');--?3714(分秒)  SELECT?EXTRACT(MINUTE_MICROSECOND?FROM?'2017-05-15?10:37:14.123456');--?3714123456(分秒毫秒)  SELECT?EXTRACT(SECOND_MICROSECOND?FROM?'2017-05-15?10:37:14.123456');--?14123456(秒毫秒)  --?MySQL?Extract()?函數除了沒有date(),time()?的功能外,其他功能一應具全。  --?并且還具有選取‘day_microsecond'?等功能。  --?注意這里不是只選取?day?和?microsecond,而是從日期的?day?部分一直選取到?microsecond?部分。      SELECT?DAYNAME('2017-05-15?10:37:14.123456');--?Monday(返回英文星期)  SELECT?MONTHNAME('2017-05-15?10:37:14.123456');--?May(返回英文月份)  SELECT?LAST_DAY('2016-02-01');--?2016-02-29?(返回月份中最后一天)  SELECT?LAST_DAY('2016-05-01');--?2016-05-31    --?DATE_ADD(date,INTERVAL?expr?type)?從日期加上指定的時間間隔  --?type參數可參考:http://www.w3school.com.cn/sql/func_date_sub.asp  SELECT?DATE_ADD('2017-05-15?10:37:14.123456',INTERVAL?1?YEAR);--?表示:2018-05-15?10:37:14.123456  SELECT?DATE_ADD('2017-05-15?10:37:14.123456',INTERVAL?1?QUARTER);--?表示:2017-08-15?10:37:14.123456  SELECT?DATE_ADD('2017-05-15?10:37:14.123456',INTERVAL?1?MONTH);--?表示:2017-06-15?10:37:14.123456  SELECT?DATE_ADD('2017-05-15?10:37:14.123456',INTERVAL?1?WEEK);--?表示:2017-05-22?10:37:14.123456  SELECT?DATE_ADD('2017-05-15?10:37:14.123456',INTERVAL?1?DAY);--?表示:2017-05-16?10:37:14.123456  SELECT?DATE_ADD('2017-05-15?10:37:14.123456',INTERVAL?1?HOUR);--?表示:2017-05-15?11:37:14.123456  SELECT?DATE_ADD('2017-05-15?10:37:14.123456',INTERVAL?1?MINUTE);--?表示:2017-05-15?10:38:14.123456  SELECT?DATE_ADD('2017-05-15?10:37:14.123456',INTERVAL?1?SECOND);--?表示:2017-05-15?10:37:15.123456  SELECT?DATE_ADD('2017-05-15?10:37:14.123456',INTERVAL?1?MICROSECOND);--?表示:2017-05-15?10:37:14.123457      --?DATE_SUB(date,INTERVAL?expr?type)?從日期減去指定的時間間隔  SELECT?DATE_SUB('2017-05-15?10:37:14.123456',INTERVAL?1?YEAR);--?表示:2016-05-15?10:37:14.123456  SELECT?DATE_SUB('2017-05-15?10:37:14.123456',INTERVAL?1?QUARTER);--?表示:2017-02-15?10:37:14.123456  SELECT?DATE_SUB('2017-05-15?10:37:14.123456',INTERVAL?1?MONTH);--?表示:2017-04-15?10:37:14.123456  SELECT?DATE_SUB('2017-05-15?10:37:14.123456',INTERVAL?1?WEEK);--?表示:2017-05-08?10:37:14.123456  SELECT?DATE_SUB('2017-05-15?10:37:14.123456',INTERVAL?1?DAY);--?表示:2017-05-14?10:37:14.123456  SELECT?DATE_SUB('2017-05-15?10:37:14.123456',INTERVAL?1?HOUR);--?表示:2017-05-15?09:37:14.123456  SELECT?DATE_SUB('2017-05-15?10:37:14.123456',INTERVAL?1?MINUTE);--?表示:2017-05-15?10:36:14.123456  SELECT?DATE_SUB('2017-05-15?10:37:14.123456',INTERVAL?1?SECOND);--?表示:2017-05-15?10:37:13.123456  SELECT?DATE_SUB('2017-05-15?10:37:14.123456',INTERVAL?1?MICROSECOND);--?表示:2017-05-15?10:37:14.123455    --?經特殊日期測試,DATE_SUB(date,INTERVAL?expr?type)可放心使用  SELECT?DATE_SUB(CURDATE(),INTERVAL?1?DAY);--?前一天:2017-05-11  SELECT?DATE_SUB(CURDATE(),INTERVAL?-1?DAY);--?后一天:2017-05-13  SELECT?DATE_SUB(CURDATE(),INTERVAL?1?MONTH);--?一個月前日期:2017-04-12  SELECT?DATE_SUB(CURDATE(),INTERVAL?-1?MONTH);--?一個月后日期:2017-06-12  SELECT?DATE_SUB(CURDATE(),INTERVAL?1?YEAR);--?一年前日期:2016-05-12  SELECT?DATE_SUB(CURDATE(),INTERVAL?-1?YEAR);--?一年后日期:20178-06-12  --?MySQL?date_sub()?日期時間函數?和?date_add()?用法一致,并且可以用INTERNAL?-1?xxx的形式互換使用;  --?另外,MySQL?中還有兩個函數?subdate(),?subtime(),建議,用?date_sub()?來替代。    --?MySQL?另類日期函數:period_add(P,N),?period_diff(P1,P2)  --?函數參數“P”?的格式為“YYYYMM”?或者?“YYMM”,第二個參數“N”?表示增加或減去?N?month(月)。  --?MySQL?period_add(P,N):日期加/減去N月。  SELECT?PERIOD_ADD(201705,2),?PERIOD_ADD(201705,-2);--?201707??20170503  --?period_diff(P1,P2):日期?P1-P2,返回?N?個月。  SELECT?PERIOD_DIFF(201706,?201703);--?  --?datediff(date1,date2):兩個日期相減?date1?-?date2,返回天數  SELECT?DATEDIFF('2017-06-05','2017-05-29');--?7  --?TIMEDIFF(time1,time2):兩個日期相減?time1?-?time2,返回?TIME?差值  SELECT?TIMEDIFF('2017-06-05?19:28:37',?'2017-06-05?17:00:00');--?02:28:37      --?MySQL日期轉換函數  SELECT?TIME_TO_SEC('01:00:05');?--?3605  SELECT?SEC_TO_TIME(3605);--?01:00:05    --?MySQL?(日期、天數)轉換函數:to_days(date),?from_days(days)  SELECT?TO_DAYS('0000-00-00');?--?NULL?  SELECT?TO_DAYS('2017-06-05');?--?736850  SELECT?FROM_DAYS(0);???????????--?'0000-00-00'?  SELECT?FROM_DAYS(736850);??????--?'2017-06-05'    --?MySQL?Str?to?Date?(字符串轉換為日期)函數:str_to_date(str,?format)    SELECT?STR_TO_DATE('06.05.2017?19:40:30',?'%m.%d.%Y?%H:%i:%s');--?2017-06-05?19:40:30  SELECT?STR_TO_DATE('06/05/2017',?'%m/%d/%Y');??????????????????--?2017-06-05  SELECT?STR_TO_DATE('2017/12/3','%Y/%m/%d')		???????--?2017-12-03  SELECT?STR_TO_DATE('20:09:30',?'%h:%i:%s')		???????--?NULL(超過12時的小時用小寫h,得到的結果為NULL)    --?日期時間格式化  SELECT?DATE_FORMAT('2017-05-12?17:03:51',?'%Y年%m月%d日?%H時%i分%s秒');--?2017年05月12日?17時03分51秒(具體需要什么格式的數據根據實際情況來;小寫h為12小時制;)  SELECT?TIME_FORMAT('2017-05-12?17:03:51',?'%Y年%m月%d日?%H時%i分%s秒');--?0000年00月00日?17時03分51秒(time_format()只能用于時間的格式化)  --?STR_TO_DATE()和DATE_FORMATE()為互逆操作    --?MySQL?獲得國家地區時間格式函數:get_format()  --?MySQL?get_format()?語法:get_format(date|time|datetime,?'eur'|'usa'|'jis'|'iso'|'internal'  --?MySQL?get_format()?用法的全部示例:  SELECT?GET_FORMAT(DATE,'usa');???	--?'%m.%d.%Y'?  SELECT?GET_FORMAT(DATE,'jis');???	--?'%Y-%m-%d'?  SELECT?GET_FORMAT(DATE,'iso');???	--?'%Y-%m-%d'?  SELECT?GET_FORMAT(DATE,'eur');???	--?'%d.%m.%Y'?  SELECT?GET_FORMAT(DATE,'internal');???	--?'%Y%m%d'?  SELECT?GET_FORMAT(DATETIME,'usa');???	--?'%Y-%m-%d?%H.%i.%s'?  SELECT?GET_FORMAT(DATETIME,'jis');???	--?'%Y-%m-%d?%H:%i:%s'?  SELECT?GET_FORMAT(DATETIME,'iso');???	--?'%Y-%m-%d?%H:%i:%s'?  SELECT?GET_FORMAT(DATETIME,'eur');???	--?'%Y-%m-%d?%H.%i.%s'?  SELECT?GET_FORMAT(DATETIME,'internal');?--?'%Y%m%d%H%i%s'?  SELECT?GET_FORMAT(TIME,'usa');???	--?'%h:%i:%s?%p'?  SELECT?GET_FORMAT(TIME,'jis');???	--?'%H:%i:%s'?  SELECT?GET_FORMAT(TIME,'iso');???	--?'%H:%i:%s'?  SELECT?GET_FORMAT(TIME,'eur');???	--?'%H.%i.%s'?  SELECT?GET_FORMAT(TIME,'internal');?????--?'%H%i%s'      --?MySQL?拼湊日期、時間函數:makdedate(year,dayofyear),?maketime(hour,minute,second)  SELECT?MAKEDATE(2017,31);???--?'2017-01-31'?  SELECT?MAKEDATE(2017,32);???--?'2017-02-01'  SELECT?MAKETIME(19,52,35);??--?'19:52:35'    --?MySQL?時區(timezone)轉換函數:convert_tz(dt,from_tz,to_tz)  SELECT?CONVERT_TZ('2017-06-05?19:54:12',?'+08:00',?'+00:00');?--?2017-06-05?11:54:12      --?MySQL?(Unix?時間戳、日期)轉換函數  --?unix_timestamp(),?unix_timestamp(date),?from_unixtime(unix_timestamp),?from_unixtime(unix_timestamp,format)  --?將具體時間時間轉為timestamp  SELECT?UNIX_TIMESTAMP();--?當前時間的時間戳:1494815779  SELECT?UNIX_TIMESTAMP('2017-05-15');--?指定日期的時間戳:1494777600  SELECT?UNIX_TIMESTAMP('2017-05-15?10:37:14');--?指定日期時間的時間戳:1494815834    --?將時間戳轉為具體時間  SELECT?FROM_UNIXTIME(1494815834);--?2017-05-15?10:37:14  SELECT?FROM_UNIXTIME(1494815834,?'%Y年%m月%d日?%h時%分:%s秒');--?獲取時間戳對應的格式化日期時間    --?MySQL?時間戳(timestamp)轉換、增、減函數  SELECT?TIMESTAMP('2017-05-15');--?2017-05-15?00:00:00  SELECT?TIMESTAMP('2017-05-15?08:12:25',?'01:01:01');--?2017-05-15?09:13:26  SELECT?DATE_ADD('2017-05-15?08:12:25',?INTERVAL?1?DAY);--?2017-05-16?08:12:25  SELECT?TIMESTAMPADD(DAY,?1,?'2017-05-15?08:12:25');--?2017-05-16?08:12:25;?MySQL?timestampadd()?函數類似于?date_add()。    SELECT?TIMESTAMPDIFF(YEAR,?'2017-06-01',?'2016-05-15');--?-1  SELECT?TIMESTAMPDIFF(MONTH,?'2017-06-01',?'2016-06-15');--?-11  SELECT?TIMESTAMPDIFF(DAY,?'2017-06-01',?'2016-06-15');--?-351  SELECT?TIMESTAMPDIFF(HOUR,?'2017-06-01?08:12:25',?'2016-06-15?00:00:00');--?-8432  SELECT?TIMESTAMPDIFF(MINUTE,?'2017-06-01?08:12:25',?'2016-06-15?00:00:00');--?-505932  SELECT?TIMESTAMPDIFF(SECOND,?'2017-06-01?08:12:25',?'2016-06-15?00:00:00');--?-30355945

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享