日期函数意味着函数的参数要是有效的日期值,或者调用函数返回日期。
1、now函数
now用于返回当前系统日期+时间。
NOW()
实例:
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2019-06-27 22:41:27 | +---------------------+
2、curdate函数
curdate返回当前系统日期,不包含时间。
CURDATE()
实例:
mysql> select CURDATE(); +------------+ | CURDATE() | +------------+ | 2019-06-27 | +------------+
3、curtime函数
curtime返回当前系统时间,不包含日期。
CURTIME()
实例:
mysql> select CURTIME(); +-----------+ | CURTIME() | +-----------+ | 22:45:17 | +-----------+
4、可以获取指定的部分,即指定取年、月、日、时、分、秒。
获取年、月、日的函数分别如下,参数须是完整有效的日期格式。
YEAR(date) 获取年 MONTH(date) 获取月 DAY(date) 获取日
实例:
#有效的: mysql> select YEAR('1998-01-01') as year, MONTH('1998-01-01') as month, DAY('1998-01-01') as day; +------+-------+------+ | year | month | day | +------+-------+------+ | 1998 | 1 | 1 | +------+-------+------+ #无效的: mysql> select YEAR('1998-01') as year, MONTH('01-01') as month, DAY('1998-01') as day; +------+-------+------+ | year | month | day | +------+-------+------+ | NULL | NULL | NULL | +------+-------+------+
获取时、分、秒函数分别如下,参数须包含完整合法的时间格式。
HOUR(time) 时 MINUTE(time) 分 SECOND(time) 秒
实例:
#有效的: mysql> select HOUR('1998-01-01 23:34:34') as hour, MINUTE('23:34:34') as minute, SECOND('23:34:34') as second; +------+--------+--------+ | hour | minute | second | +------+--------+--------+ | 23 | 34 | 34 | +------+--------+--------+ #无效的: mysql> select HOUR('1998-01-01') as hour, MINUTE('35:34') as minute, SECOND('23-34-34') as second; +------+--------+--------+ | hour | minute | second | +------+--------+--------+ | NULL | 34 | 23 | +------+--------+--------+
5、str_to_date函数
从名字可以看出,此函数是将日期格式的字符转换成日期。
STR_TO_DATE(str,format)
str参数是有效的日期格式的字符,format参数使用格式符对str解析。format参数很重要,因为它告诉sql解析器如何去解析str参数,哪部分代表年份,哪部分代表月份等。
format的格式类似:%Y-%m-%d。以下是格式符及其涵义:
%Y 年,四位 %y 年,2位 %m 月,数值(00-12) %c 月,(1,2...11,12) %d 月的天,数值(00-31) %H 小时(24小时制) %h 小时 (12小时制) %i 分钟,数值(00-59) %s 秒(00-59)
实例:
mysql> select STR_TO_DATE('1999-03-09','%Y-%m-%d') as date; +------------+ | date | +------------+ | 1999-03-09 | +------------+ #如果用户输入的日期值,有可能出现月份在前,年份在后的情况, #如:9-13-1999,此时若要返回正常日期进行查询,我们就要进行转换: mysql> select STR_TO_DATE('9-13-1999','%m-%d-%Y') as date; +------------+ | date | +------------+ | 1999-09-13 | +------------+
format参数格式符之间的分隔字符需要与str参数各部分保持一致,否则返回null。
实例:
mysql> select STR_TO_DATE('1999-03 09','%Y-%m-%d') as date1; +-------+ | date1 | +-------+ | NULL | +-------+ mysql> select STR_TO_DATE('9月13日1999年','%m月%d日%Y年') as date; +------------+ | date | +------------+ | 1999-09-13 | +------------+
6、date_format函数
date_format函数作用与str_to_date函数相反,它是将日期转换成指定格式的字符。
DATE_FORMAT(date,format)
date参数是有效日期值,format参数中格式符与str_to_date的涵义一样,不过此时的format格式由你指定。
实例:
mysql> SELECT DATE_FORMAT(now(),'%Y年%m月%d日') as '日期'; +----------------+ | 日期 | +----------------+ | 2019年06月27日 | +----------------+
本文只是整理了几个常见的日期函数,有不对或不足的地方请大家指出,一起讨论学习,一起进步。