MySQL日期函數

MySQL日期函數

1:獲取系統當前日期和時間
NOW(),LOCALTIME(),LOCALTIMESTAMP(),CURDATE(),CURRENT_DATE(),CURRENT_TIME(),CURRENT_TIMESTAMP(),SYSDATE()mysql

mysql> SELECT NOW(),LOCALTIME(),LOCALTIMESTAMP(); +---------------------+---------------------+---------------------+
| NOW() | LOCALTIME() | LOCALTIMESTAMP() | +---------------------+---------------------+---------------------+
| 2018-07-02 20:14:27 | 2018-07-02 20:14:27 | 2018-07-02 20:14:27 | +---------------------+---------------------+---------------------+

mysql> SELECT CURDATE(),CURRENT_DATE(),CURRENT_TIME(); +------------+----------------+----------------+
| CURDATE() | CURRENT_DATE() | CURRENT_TIME() | +------------+----------------+----------------+
| 2018-07-02 | 2018-07-02 | 20:16:33 | +------------+----------------+----------------+

mysql> SELECT CURRENT_TIMESTAMP(),SYSDATE(); +---------------------+---------------------+
| CURRENT_TIMESTAMP() | SYSDATE() | +---------------------+---------------------+
| 2018-07-02 20:17:17 | 2018-07-02 20:17:17 | +---------------------+---------------------+
1 row in set (0.00 sec)

2:DATE(date) sql

返回date的日期部分函數

mysql> SELECT DATE('2018-07-01 10:00:00'); +-----------------------------+
| DATE('2018-07-01 10:00:00') | +-----------------------------+
| 2018-07-01 | +-----------------------------+
1 row in set (0.00 sec)

3:DATE_ADD(date,INTERVAL expr type)spa

給日期添加指定的時間間隔;expr 參數是您但願添加的時間間隔unix

mysql> select date_add('2018-01-01',interval 2 day); +---------------------------------------+
| date_add('2018-01-01',interval 2 day) | +---------------------------------------+
| 2018-01-03 | +---------------------------------------+

mysql> SELECT DATE_ADD('2018-01-01',INTERVAL 1 MONTH); +-----------------------------------------+
| DATE_ADD('2018-01-01',INTERVAL 1 MONTH) | +-----------------------------------------+
| 2018-02-01 | +-----------------------------------------+

4:DATE_SUB(date,INTERVAL expr type)code

從日期減去指定的時間間隔orm

mysql> select date_sub('2018-01-01 18:00:00',interval 2 hour); +-------------------------------------------------+
| date_sub('2018-01-01 18:00:00',interval 2 hour) | +-------------------------------------------------+
| 2018-01-01 16:00:00 | +-------------------------------------------------+

mysql> select date_sub('2018-12-01',interval 1 year); +----------------------------------------+
| date_sub('2018-12-01',interval 1 year) | +----------------------------------------+
| 2017-12-01 | +----------------------------------------+

5:DATEDIFF(date1,date2)blog

返回兩個日期之間的天數索引

mysql> select datediff('2018-03-10','2018-04-10'); +-------------------------------------+
| datediff('2018-03-10','2018-04-10') | +-------------------------------------+
| -31 | +-------------------------------------+

mysql> select datediff('2018-04-10','2018-03-10'); +-------------------------------------+
| datediff('2018-04-10','2018-03-10') | +-------------------------------------+
| 31 | +-------------------------------------+

6:DATE_FORMAT()ci

用不一樣的格式顯示日期/時間

mysql> select date_format(now(),'%H:%i:%s %m-%d-%Y'); +----------------------------------------+
| date_format(now(),'%H:%i:%s %m-%d-%Y') | +----------------------------------------+
| 20:59:26 07-02-2018 | +----------------------------------------+

7:EXTRACT()

返回日期/時間的單獨部分,好比年、月、日、小時、分鐘等等

mysql> select extract(year from '2018-06-06'); +---------------------------------+
| extract(year from '2018-06-06') | +---------------------------------+
| 2018 | +---------------------------------+

mysql> select extract(day from '2018-06-06'); +--------------------------------+
| extract(day from '2018-06-06') | +--------------------------------+
| 6 | +--------------------------------+

mysql> select extract(second from '2018-06-06 16:16:17'); +--------------------------------------------+
| extract(second from '2018-06-06 16:16:17') | +--------------------------------------------+
| 17 | +--------------------------------------------+

8:DAYNAME(),MONTHNAME() ,DAYOFWEEK()

DAYNAME()返回日期的星期名;
返回日期的月份名字
DAYOFWEEK()返回值 1-週日 2-週一 3-週二….7-週六

mysql> select dayname(now()); +----------------+
| dayname(now()) | +----------------+
| Monday | +----------------+
mysql> select monthname('2018-07-01'); +-------------------------+
| monthname('2018-07-01') | +-------------------------+
| July | +-------------------------+
mysql> select dayofweek(now()); +------------------+
| dayofweek(now()) | +------------------+
| 2 | +------------------+

9:DAY(date)

返回date中的日期

mysql> select day('2018-01-15'); +-------------------+
| day('2018-07-15') | +-------------------+
| 15 | +-------------------+

10:DAYOFWEEK(date),WEEKDAY(date)

DAYOFWEEK返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六);
WEEKDAY返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)

mysql> select dayofweek('2018-07-02'); +-------------------------+
| dayofweek('2018-07-02') | +-------------------------+
| 2 | +-------------------------+

mysql> select weekday('2018-07-02'); +-----------------------+
| weekday('2018-07-02') | +-----------------------+
| 0 | +-----------------------+

11:DAYOFMONTH(date)

返回date的月份中日期,在1到31範圍內

mysql> select DAYOFMONTH('2018-01-30'); +--------------------------+
| DAYOFMONTH('2018-01-30') | +--------------------------+
| 30 | +--------------------------+

12:DAYOFYEAR(date)

返回date在一年中的日數, 在1到366範圍內

mysql> select DAYOFYEAR('2018-07-01'); +-------------------------+
| DAYOFYEAR('2018-07-01') | +-------------------------+
| 182 | +-------------------------+

13:TO_DAYS(date),FROM_DAYS(N)

TO_DAYS給出一個日期 date,返回西元0年至日期date是總共多少天;
FROM_DAYS給出一個天數 N,返回一個 DATE 值

mysql> select to_days('2018-07-01'); +-----------------------+
| to_days('2018-07-01') | +-----------------------+
| 737241 | +-----------------------+

mysql> select from_days(737241); +-------------------+
| from_days(737241) | +-------------------+
| 2018-07-01 | +-------------------+

14:UNIX_TIMESTAMP()

當前時間戳

mysql> select UNIX_TIMESTAMP(); +------------------+
| UNIX_TIMESTAMP() | +------------------+
| 1530588395 | +------------------+

15:FROM_UNIXTIME(unix_timestamp,format)

把時間戳轉化成日期時間

mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP()),FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d %H:%i'); +---------------------------------+--------------------------------------------------+
| FROM_UNIXTIME(UNIX_TIMESTAMP()) | FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d %H:%i') | +---------------------------------+--------------------------------------------------+
| 2018-07-03 11:28:09 | 2018-07-03 11:28 | +---------------------------------+--------------------------------------------------+

16:GET_FORMAT({DATE|TIME|DATETIME}, {‘EUR’|’USA’|’JIS’|’ISO’|’INTERNAL’})

返回一個格式化的日期字符串
get_format

mysql> select GET_FORMAT(DATE,'USA'); +------------------------+
| GET_FORMAT(DATE,'USA') | +------------------------+
| %m.%d.%Y | +------------------------+

17:YEAR(date)

返回date的年份

mysql> SELECT YEAR('70-01-16'),YEAR('2018-01-01'); +------------------+--------------------+
| YEAR('70-01-16') | YEAR('2018-01-01') | +------------------+--------------------+
| 1970 | 2018 | +------------------+--------------------+

18:HOUR(time),MINUTE(time),SECOND(time)

返回時、分、秒

mysql> select hour('15:31:13'),minute('15:32:22'),second('15:33:59'); +------------------+--------------------+--------------------+
| hour('15:31:13') | minute('15:32:22') | second('15:33:59') | +------------------+--------------------+--------------------+
| 15 | 32 | 59 | +------------------+--------------------+--------------------+

19:LAST_DAY(date)

獲取日期或日期時間值,並返回該月最後一天的相應值。若是參數無效,返回NULL。

mysql> select last_day(now()); +-----------------+
| last_day(now()) | +-----------------+
| 2018-07-31 | +-----------------+
mysql> select last_day('2018-01-01'); +------------------------+
| last_day('2018-01-01') | +------------------------+
| 2018-01-31 | +------------------------+

20:MAKEDATE(year,dayofyear)

返回一個日期,給定年和一天的年值。dayofyear必須大於0,不然結果爲空。

mysql> select makedate('2018',360); +----------------------+
| makedate('2018',360) | +----------------------+
| 2018-12-26 | +----------------------+

21:MAKETIME(hour,minute,second)

返回從hour:minute:second

mysql> select maketime(12,30,40); +--------------------+
| maketime(12,30,40) | +--------------------+
| 12:30:40 | +--------------------+

22:MICROSECOND(expr)

返回時間或日期時間表達式expr中的微秒,其值在0到99999999之間。

mysql> select MICROSECOND('12:32:35.4325'); +------------------------------+
| MICROSECOND('12:32:35.4325') | +------------------------------+
| 432500 | +------------------------------+

23:PERIOD_ADD(month,add)

返回對month作增減的操做結果,month的格式爲yyMM或者yyyyMM,返回的都是yyyyMM格式的結果,add能夠傳負值

mysql> select PERIOD_ADD(201807,1),PERIOD_ADD(201807,-2); +----------------------+-----------------------+
| PERIOD_ADD(201807,1) | PERIOD_ADD(201807,-2) | +----------------------+-----------------------+
| 201808 | 201805 | +----------------------+-----------------------+

24:PERIOD_DIFF(monthStart,monthEnd)

返回monthStart - monthEnd的間隔月數

mysql> SELECT PERIOD_DIFF(201807,201808),PERIOD_DIFF(201807,201806); +----------------------------+----------------------------+
| PERIOD_DIFF(201807,201808) | PERIOD_DIFF(201807,201806) | +----------------------------+----------------------------+
| -1 | 1 | +----------------------------+----------------------------+

25:ADDDATE(date,INTERVAL expr unit)

同 DATE_ADD()

26:SUBDATE(date,INTERVAL expr unit)

同 DATE_SUB()

27:SEC_TO_TIME(seconds)

把秒數轉換成時間

mysql> select SEC_TO_TIME(360); +------------------+
| SEC_TO_TIME(360) | +------------------+
| 00:06:00 | +------------------+

28:TIME_TO_SEC(time)

把時間轉化成秒數

mysql> select TIME_TO_SEC('12:10:00'); +-------------------------+
| TIME_TO_SEC('12:10:00') | +-------------------------+
| 43800 | +-------------------------+

29:STR_TO_DATE(date,format )

把字符串轉成format格式的日期時間

mysql> SELECT STR_TO_DATE('2018-08-08','%Y-%m-%d'); +--------------------------------------+
| STR_TO_DATE('2018-08-08','%Y-%m-%d') | +--------------------------------------+
| 2018-08-08 | +--------------------------------------+

30:ADDTIME(expr1,expr2)

把expr2加到expr1上

mysql> SELECT ADDTIME('2017-12-31 23:59:59','00:00:01'); +-------------------------------------------+
| ADDTIME('2017-12-31 23:59:59','00:00:01') | +-------------------------------------------+
| 2018-01-01 00:00:00 | +-------------------------------------------+

31:TIMESTAMP(expr), TIMESTAMP(expr1,expr2)

對於單個參數,該函數返回日期或日期時間表達式expr做爲一個datetime值。對於兩個參數,它將時間表達式expr2添加到日期或datetime表達式expr1,並將結果做爲一個datetime值返回。

mysql> SELECT TIMESTAMP('2018-01-01'),TIMESTAMP('2018-01-01','10:12:32'); +-------------------------+------------------------------------+
| TIMESTAMP('2018-01-01') | TIMESTAMP('2018-01-01','10:12:32') | +-------------------------+------------------------------------+
| 2018-01-01 00:00:00 | 2018-01-01 10:12:32 | +-------------------------+------------------------------------+

32:TIMESTAMPADD(unit,interval,datetime_expr)

將整數表達式間隔添加到日期或日期時間表達式datetime_expr。interval的單位由unit參數給出,它應該是如下值之一:微秒(微秒)、秒、分鐘、小時、天、星期、月、季度或年。

mysql> SELECT TIMESTAMPADD(year,3,'2018-01-01'),TIMESTAMPADD(day,32,'2018-01-01'); +-----------------------------------+-----------------------------------+
| TIMESTAMPADD(year,3,'2018-01-01') | TIMESTAMPADD(day,32,'2018-01-01') | +-----------------------------------+-----------------------------------+
| 2021-01-01 | 2018-02-02 | +-----------------------------------+-----------------------------------+

33:TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

返回datetime_expr2−datetime_expr1,datetime_expr1和datetime_expr2日期或日期時間表達式。一個表達式能夠是日期,另外一個表達式能夠是日期時間;一個日期值被視爲一個datetime,在須要的時候有時間部分「00:00」。結果的單位(一個整數)由單位參數給出。

mysql> SELECT TIMESTAMPDIFF(month,'2018-01-01 10:00:00','2018-07-01'); +---------------------------------------------------------+
| TIMESTAMPDIFF(month,'2018-01-01 10:00:00','2018-07-01') | +---------------------------------------------------------+
| 5 | +---------------------------------------------------------+

34:TIME_FORMAT(time,format)

返回指定的時間格式

mysql> SELECT TIME_FORMAT('12:32:10','%H-%i-%s'); +------------------------------------+
| TIME_FORMAT('12:32:10','%H-%i-%s') | +------------------------------------+
| 12-32-10 | +------------------------------------+
相關文章
相關標籤/搜索