-- 关于 mysql时间函数
-- 获取当前日期 2017-08-17 select current_date(); -- 获取当前时间20:03:07 select current_time();
-- 获取当前的日期和时间2017-08-17 20:03:24 select now(); select sysdate() select current_timestamp()
-- 获取datetime的年,月,日 select year(now()); -- 年 2017 select month(now());-- 月 08 select day(now()); -- 天 17
-- 返回datetime 的日期部分 2017-08-17 相当于:current_date() select date(now());
-- 在datetime加上日期或时间 -- day 天 hour 小时 minute 分钟 -- second 秒 microsecond 毫秒 week 星期 -- month 月 year 年 quarter 季节 select date_add(now(),interval 1 day);-- 当前datetime的后一天 2017-08-18 20:05:04 select date_add(now(),interval -1 day);-- 当前datetime的前一天 2017-08-16 2 0:05:04 select date(date_add(now(),interval -1 day));-- 当前datetime的前一天的日期 select date_add(now(),interval 1 month);-- 当前datetime的后一个月 select date_add(now(),interval 1 year); -- 当前datetime的后一个年
-- 日期时间转换函数 %Y 年 %m 月 %d 日 %H 时 %i 分 %s 秒 -- 中间的“-” 换成别的字符也可以 不加也可以 select date_format('2088-08-08 18:08:08', '%Y-%m-%d %H:%i:%s'); -- 2088-08-08 13:08:08 -- 如果没有年月日 结果就不是预期结果了 下边可以看到 直接把预期的时分秒转换成了年月日 select date_format('12:02:06', '%Y-%m-%d %H:%i:%s'); -- 2012-02-06 00:00:00 -- 如果之后时分秒 建议用 time_format 专门来做时间的转换(时分秒) select time_format('12:02:06','%H:%i:%s');
-- 上边是字符格式转换成时间 下边介绍时间转换成字符串格式 str_to_date select str_to_date('06-08-2008', '%d-%m-%Y'); -- 2008-08-06 字符串是“-” 分割 后边表达式也要“-” 分割 select str_to_date('06*08*2008', '%d*%m*%Y'); -- 2008-08-06 字符串是“*” 分割 后边表达式也要“*” 分割 select str_to_date('08:09:10', '%h:%i:%s'); -- 08:09:10 select str_to_date('08-09-2008 08:09:30', '%d-%m-%Y %h:%i:%s'); -- 2008-08-09 08:09:30
-- 这个函数不知道什么情境下会用 就是计算到现在的天数 从0000年一月一日 开始 select to_days('0000-01-01'); -- 0 select to_days('2008-08-08'); -- 733627
-- time_to_sec 这个是计算总共的秒数 从 00:00:00 开始 -- sec_to_time 把秒数转换成时间 select time_to_sec('01:00:05'); -- 3605 select sec_to_time(3605); -- '01:00:05'
-- 还有一个很酷炫的函数 构造时间 -- makdedate(year,dayofyear), maketime(hour,minute,second) select makedate(2008,31); -- '2001-01-31' 2008年+31天 select makedate(2008,32); -- '2001-02-01' 2008年+32天 select maketime(12,15,30); -- '12:15:30' 时,分,秒
-- 计算2个日期之间的 差年 天 小时 分 秒 毫秒 等 select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1 select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485 select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12 select timestampdiff(MINUTE,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -720 select timestampdiff(microsecond ,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- 43200000000
-- %Y 年 %m 月 %d 日 %H 时(大写H是24小时制 小写h是12小时制) %i 分 %s 秒