一、将字符串转变为日期
STR_TO_DATE(string, format_mask)
SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");
-> 2017-08-10
二、返回当前时间
1、NOW()
返回当前日期和时间
SELECT NOW();
-> 2018-09-19 20:57:43
2、CURDATE()
返回当前日期
SELECT CURDATE();
-> 2018-09-19
3、CURTIME()
返回当前时间
SELECT CURTIME();
-> 19:59:02
三、提取时间
1、DATE()
从时间表达式中提取日期值
SELECT DATE("2017-06-15");
-> 2017-06-15
2、TIME()
从时间表达式中提取时间部分
SELECT TIME("19:30:10");
-> 19:30:10
3、YEAR(d)
提取年份
SELECT YEAR("2017-06-15");
-> 2017
4、MONTH(d)
提取月份
SELECT MONTH('2011-11-11 11:11:11');
->11
5、DAY(d)
提取天
SELECT DAY("2017-06-15");
-> 15
6、HOUR(t)
提取小时
SELECT HOUR('1:2:3');
-> 1
7、MINUTE(t)
提取分钟
SELECT MINUTE('1:2:3')
-> 2
8、SECOND(t)
提取秒
SELECT SECOND('1:2:3');
-> 3
四、加减时间
1、ADDDATE(d,n)
加几天
SELECT ADDDATE("2017-06-15", 10);
->2017-06-25
SELECT ADDDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTE);
-> 2011-11-11 11:16:11
2、ADDTIME(t,n)
加几秒
加 5 秒:
SELECT ADDTIME('2011-11-11 11:11:11', 5);
->2011-11-11 11:11:16 (秒)
添加 2 小时, 10 分钟, 5 秒:
SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5");
-> 2020-06-15 11:44:26
3、PERIOD_ADD(period,n)
加几月
SELECT PERIOD_ADD(201703, 5);
-> 201708
4、SUBDATE(d,n)
减几天
SELECT SUBDATE('2011-11-11 11:11:11', 1)
->2011-11-10 11:11:11 (默认是天)
5、SUBTIME(t,n)
减几秒
SELECT SUBTIME('2011-11-11 11:11:11', 5)
->2011-11-11 11:11:06 (秒)
五、相差时间
1、DATEDIFF(d1,d2)
相差天数
SELECT DATEDIFF('2001-01-01','2001-02-02')
-> -32
2、TIMEDIFF(time1, time2)
相差时间
SELECT TIMEDIFF("13:10:11", "13:10:10");
-> 00:00:01
3、PERIOD_DIFF(period1, period2)
相差月份
SELECT PERIOD_DIFF(201710, 201703);
-> 7
六、判断周几
1、DAYNAME(d)
返回日期 d 是星期几,如 Monday,Tuesday
SELECT DAYNAME('2011-11-11 11:11:11')
->Friday
2、DAYOFWEEK(d)
日期 d 今天是星期几,1 星期日,2 星期一,以此类推
SELECT DAYOFWEEK('2011-11-11 11:11:11')
->6
3、WEEKDAY(d)
日期 d 是星期几,0 表示星期一,1 表示星期二
SELECT WEEKDAY("2017-06-15");
-> 3
七、其他
1、QUARTER(d)
返回日期d是第几季节,返回 1 到 4
SELECT QUARTER('2011-11-11 11:11:11')
-> 4
2、LAST_DAY(d)
返回给给定日期的那一月份的最后一天
SELECT LAST_DAY("2017-06-20");
-> 2017-06-30
3、MONTHNAME(d)
返回日期当中的月份名称,如 November
SELECT MONTHNAME('2011-11-11 11:11:11')
-> November