hzk20220818

mysql 时间函数

时间格式转换

标准时间格式: 2017-05-12 11:41:55

-- 字符串转换为日期函数:str_to_date(str, format)

SELECT STR_TO_DATE('06.05.2017 19:40:30', '%m.%d.%Y %H:%i:%s');-- 2017-06-05 19:40:30
SELECT STR_TO_DATE('06/05/2017', '%m/%d/%Y');                  -- 2017-06-05
SELECT STR_TO_DATE('2017/12/3','%Y/%m/%d')		       -- 2017-12-03
SELECT STR_TO_DATE('20:09:30', '%h:%i:%s')		       -- NULL(超过12时的小时用小写h,得到的结果为NULL)

-- 日期时间格式化转字符串

SELECT DATE_FORMAT('2017-05-12 17:03:51', '%Y年%m月%d日 %H时%i分%s秒');-- 2017年05月12日 17时03分51秒(具体需要什么格式的数据根据实际情况来;小写h为12小时制;)
SELECT TIME_FORMAT('2017-05-12 17:03:51', '%Y年%m月%d日 %H时%i分%s秒');-- 0000年00月00日 17时03分51秒(time_format()只能用于时间的格式化)

-- STR_TO_DATE()和DATE_FORMATE()为互逆操作

当前时间

now()
-- 当前日期时间:2017-05-12 11:41:55

当前日期

SELECT CURDATE();
-- 当前日期:2017-05-12

当前时间

SELECT CURTIME();
-- 当前时间:11:42:47

截取时间的一部分

datatime = '2017-05-15 10:37:14.123456';
DATE(datatime);-- 获取日期:2017-05-15
TIME('2017-05-15 10:37:14.123456');-- 获取时间:10:37:14.123456
YEAR('2017-05-15 10:37:14.123456');-- 获取年份
MONTH('2017-05-15 10:37:14.123456');-- 获取月份
DAY('2017-05-15 10:37:14.123456');-- 获取日
HOUR('2017-05-15 10:37:14.123456');-- 获取时
MINUTE('2017-05-15 10:37:14.123456');-- 获取分
SECOND('2017-05-15 10:37:14.123456');-- 获取秒
SELECT QUARTER('2017-05-15 10:37:14.123456');-- 获取季度

时间加法

-- DATE_ADD(date,INTERVAL expr type) 从日期加上指定的时间间隔

SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 YEAR);-- 表示:2018-05-15 10:37:14.123456
SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 QUARTER);-- 表示:2017-08-15 10:37:14.123456
SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 MONTH);-- 表示:2017-06-15 10:37:14.123456
SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 WEEK);-- 表示:2017-05-22 10:37:14.123456
SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 DAY);-- 表示:2017-05-16 10:37:14.123456
SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 HOUR);-- 表示:2017-05-15 11:37:14.123456
SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 MINUTE);-- 表示:2017-05-15 10:38:14.123456
SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 SECOND);-- 表示:2017-05-15 10:37:15.123456
SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 MICROSECOND);-- 表示:2017-05-15 10:37:14.123457

时间减法

-- DATE_SUB(date,INTERVAL expr type) 从日期减去指定的时间间隔

SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 YEAR);-- 表示:2016-05-15 10:37:14.123456
SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 QUARTER);-- 表示:2017-02-15 10:37:14.123456
SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 MONTH);-- 表示:2017-04-15 10:37:14.123456
SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 WEEK);-- 表示:2017-05-08 10:37:14.123456
SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 DAY);-- 表示:2017-05-14 10:37:14.123456
SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 HOUR);-- 表示:2017-05-15 09:37:14.123456
SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 MINUTE);-- 表示:2017-05-15 10:36:14.123456
SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 SECOND);-- 表示:2017-05-15 10:37:13.123456
SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 MICROSECOND);-- 表示:2017-05-15 10:37:14.123455

日期减日期

-- datediff(date1,date2):两个日期相减 date1 - date2,返回天数
DATEDIFF('2017-06-05','2017-05-29');-- 7

-- TIMEDIFF(time1,time2):两个日期相减 time1 - time2,返回 TIME 差值
TIMEDIFF('2017-06-05 19:28:37', '2017-06-05 17:00:00');-- 02:28:37

引用原文链接:https://blog.csdn.net/qinshijangshan/article/details/72874667

posted on 2022-10-11 17:18  hzk-shzdx-university  阅读(26)  评论(0编辑  收藏  举报

导航