2. 函数功能分类例子
2.1 返回当前日期
- CURDATE()、CURRENT_DATE()、CURRENT_DATE
- 功能一致,格式统一 2020-04-07.
SELECT CURDATE();
-- 2020-04-07
SELECT CURRENT_DATE();
-- 2020-04-07
SELECT CURRENT_DATE;
-- 2020-04-07
2.2 返回当前时间
- CURTIME、CURRENT_TIME()、CURRENT_TIME
- 功能一致,格式统一 10:31:54
SELECT CURTIME();
-- 10:31:54
SELECT CURRENT_TIME();
-- 10:31:54
SELECT CURRENT_TIME;
-- 10:31:54
2.3 返回当前时间+日期
- NOW()、CURRENT_TIMESTAMP()、CURRENT_TIMESTAMP
- NOW() 的其他同义词
- LOCALTIME
- LOCALTIME()
- LOCALTIMESTAMP
- LOCALTIMESTAMP()
- 功能一致,格式统一 2020-04-07 10:36:02.
SELECT NOW();
-- 2020-04-07 10:36:02
SELECT CURRENT_TIMESTAMP();
-- 2020-04-07 10:36:02
SELECT CURRENT_TIMESTAMP;
-- 2020-04-07 10:36:02
--
-- now() 的其他同义词
SELECT LOCALTIME();
SELECT LOCALTIME;
SELECT LOCALTIMESTAMP;
SELECT LOCALTIMESTAMP()
2.4 返回计算后的时间(如:n天过后)
adddate()和date_add()一返回计算后的日期(后)
-- 如返回7天过后的日期
SELECT ADDDATE(CURRENT_DATE(), 7);
-- 2020-04-14
-- 如返回7天过前的日期
SELECT ADDDATE(CURRENT_DATE(), -7);
-- 2020-03-31
-- 注意这个函数的使用格式和上面那个函数不同,通常也更加倾向于上一个安徽省农户
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 7 DAY);
-- 2020-04-14
subdate()和date_sub()一返回计算后的日期(前)
SELECT DATE_SUB('2008-01-02', INTERVAL 31 DAY);
-- '2007-12-02'
SELECT SUBDATE('2008-01-02', INTERVAL 31 DAY);
-- '2007-12-02'
SELECT SUBDATE('2008-01-02 12:00:00', 31);
-- '2007-12-02 12:00:00'
subtime()一返回两个时间减后的时间
SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002');
-- '2007-12-30 22:58:58.999997'
SELECT SUBTIME('01:00:00.999999', '02:00:00.999998');
-- '-00:59:59.999999'
addtime()一返回计算后的时间+日期
SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');
-- '2008-01-02 01:01:01.000001'
SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
-- '03:00:01.999997'
-- 返回7天过后的时间+日期
SELECT ADDTIME(NOW(), '7 00:00:00');
-- 2020-04-14 10:54:19
-- 返回7天之前的时间+日期
SELECT ADDTIME(NOW(), '-7 00:00:00');
-- 2020-03-31 10:53:59
-- 返回距离7天后还有多长是阿金
SELECT ADDTIME(CURRENT_DATE(), '7 00:00:00');
-- 168:00:00
timediff()一返回两个时间差,以时间表示
SELECT TIMEDIFF('2000:01:01 00:00:00', '2000:01:01 00:00:00.000001');
-- '-00:00:00.000001'
SELECT TIMEDIFF('2008-12-31 23:59:59.000001', '2008-12-30 01:01:01.000002');
-- '46:58:57.999999'
timestamp()
SELECT TIMESTAMP('2003-12-31');
-- '2003-12-31 00:00:00'
SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-- '2004-01-01 00:00:00'
timestampadd()
SELECT TIMESTAMPADD(MINUTE, 1, '2003-01-02');
-- '2003-01-02 00:01:00'
SELECT TIMESTAMPADD(WEEK, 1, '2003-01-02');
-- '2003-01-09'
timestampdiff()
SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-- 3
SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-- -1
SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-- 128885
2.5 返回提取后的结果(年月日、时分秒)
date()一提取日期/日期表达式中的日期部分
SELECT DATE('2003-12-31 01:02:03');
-- '2003-12-31'
time()一提取日期/日期表达式中的时间部分
SELECT TIME('2003-12-31 01:02:03');
-> '01:02:03'
year()一提取日期/日期表达式中的年
SELECT YEAR('2003-12-31 01:02:03');
-- 2003
month()一提取日期/日期表达式中的月
SELECT MONTH('2003-12-31 01:02:03');
-- 12
day()一提取日期/日期表达式中的日
SELECT DAY('2003-12-31 01:02:03');
-- 31
SELECT DAYOFMONTH('2003-12-31 01:02:03');
-- 31
hour()一提取日期/日期表达式中的时
SELECT HOUR('2003-12-31 01:02:03')
minute()一提取日期/日期表达式中的分
SELECT MINUTE('2003-12-31 01:02:03')
second()一提取日期/日期表达式中的秒
SELECT SECOND('2003-12-31 01:02:03')
2.6 时间日期格式化函数
date_format()
time_format()
2.7 其他日期函数
makedate()一创建日期
SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);
-- '2011-01-31', '2011-02-01'
SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);
-- '2011-12-31', '2014-12-31'
SELECT MAKEDATE(2011,0);
-- NULL
maketime()一创建时间
SELECT MAKETIME(12,15,30);
-- '12:15:30'
monthname()一返回月份的英文名称
SELECT MONTHNAME('2008-02-03');
-- 'February'
quarter()一返回季度(1~4)
SELECT QUARTER('2008-04-01');
--- 2
to_day()一返回子 0000-01-00 到传入参数的天数
SELECT TO_DAYS('0000-01-07')
-- 7
-- 如计算两个日期之间相隔的天数
SELECT TO_DAYS('2020-01-07') - TO_DAYS('2020-01-03')
-- 4
to_seconds()一给定日期或日期时间,返回自0年以来的秒数
SELECT TO_SECONDS(950501);
-- 62966505600
SELECT TO_SECONDS('2009-11-29');
--63426672000
SELECT TO_SECONDS('2009-11-29 13:43:32');
-- 63426721412
SELECT TO_SECONDS( NOW() );
-- 63426721458
week()一返回星期数,几乎不用
SELECT WEEK('2020-04-07');
-- 7
weekday()一返回星期几
SELECT WEEKDAY('2020-04-07');
-- 1
-- 返回date (0=星期一,1=星期二,… 6=星期日)的工作日索引。