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 | +------------------------------------+
相关文章
相关标签/搜索