赞
踩
-- 获得当前日期+时间(date + time)函数:NOW()
SELECT NOW(); -- 2021-07-02 16:42:18
-- 获得当前日期+时间(date + time)函数:SYSDATE()
SELECT SYSDATE(); -- 2021-07-02 16:42:18
-- 获取当期时间戳
SELECT CURRENT_TIMESTAMP() -- 2021-07-02 16:42:18
SYSDATE()日期时间函数跟NOW()类似,不同之处在于:NOW()在SELECT执行时值就得到了,而SYSDATE()在函数执行时动态得到值,看下方的例子就明白了。
SYSDATE() 日期时间函数,一般情况下很少用到。
mysql> SELECT NOW(), SLEEP(2),NOW();
+---------------------+----------+---------------------+
| NOW() | SLEEP(2) | NOW() |
+---------------------+----------+---------------------+
| 2021-07-02 16:50:48 | 0 | 2021-07-02 16:50:48 |
+---------------------+----------+---------------------+
mysql> SELECT SYSDATE(), SLEEP(2),SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE() | SLEEP(2) | SYSDATE() |
+---------------------+----------+---------------------+
| 2021-07-02 16:50:52 | 0 | 2021-07-02 16:50:54 |
+---------------------+----------+---------------------+
MySQL 日期、时间转换函数:DATE_FORMAT(date,format), TIME_FORMAT(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 STR_TO_DATE(str,format) 函数的 一个逆转换。
-- 将标准时间格式转化为指定格式的字符串格式
SELECT DATE_FORMAT('2021-07-02 16:42:18','%Y年%m月%d日 %H时%i分%s秒'); -- 2021年07月02日 16时42分18秒
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日 %H时%i分%s秒'); -- 2021年07月02日 16时58分04秒
SELECT TIME_FORMAT('16:42:18','%H时%i分%s秒'); -- 16时42分18秒
SELECT TIME_FORMAT(NOW(),'%H时%i分%s秒'); -- 16时58分04秒
-- 将杂乱无序的字符串类型的时间格式转化为标准时间格式
SELECT STR_TO_DATE('07/02/2021', '%m/%d/%Y'); -- 2021-07-09
SELECT STR_TO_DATE('07/02/21' , '%m/%d/%y'); -- 2021-07-09
SELECT STR_TO_DATE('07.02.2021', '%m.%d.%Y'); -- 2021-07-09
SELECT STR_TO_DATE('07:09:30', '%h:%i:%s'); -- 07:09:30
SELECT STR_TO_DATE('07.02.2021 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2021-07-02 08:09:30
-- 获取当期时间戳数字 SELECT UNIX_TIMESTAMP(); -- 1625217968 -- 获取指定时间的时间戳数字 SELECT UNIX_TIMESTAMP('2021-07-02 16:42:18'); -- 1625215338 -- 时间戳转为时间格式 SELECT FROM_UNIXTIME(1625215338); -- 2021-07-02 16:42:18 -- 时间戳转为指定格式时间字符串 SELECT FROM_UNIXTIME(1625215338,'%Y年%m月%d日 %H时%i分%s秒'); -- 2021年07月02日 16时42分18秒 -- 转换13位时间戳为10位时间戳,直接截取下标1-10位就可以了 SELECT SUBSTRING(1625215338123,1,10) -- 日期转为天数(从公元0年开始算的哟) SELECT TO_DAYS(NOW()); -- 738338 -- 天数转为日期(从公元0年开始算的哟) SELECT FROM_DAYS(738338); -- 2021-07-02 -- 时间转为秒数(从当日零时算起) SELECT TIME_TO_SEC('12:30:01'); -- 45001 -- 秒数转为时间(从当日零时算起) SELECT SEC_TO_TIME(45001); -- '12:30:01' -- 拼凑日期 MAKEDATE(year,dayofyear) SELECT MAKEDATE(2021,20); -- 2021-01-20 SELECT MAKEDATE(2021,150); -- 2021-05-30 -- 拼凑时间 MAKETIME(hour,minute,second) SELECT MAKETIME(12,30,5); -- 12:30:05 -- 时区转换 CONVERT_TZ(dt,from_tz,to_tz) select CONVERT_TZ('2021-07-02 12:00:00', '+00:00', '+08:00'); -- 2021-07-02 20:00:00
SELECT DATE_ADD(NOW(), interval 1 day) '加1天'; -- 增一天 SELECT DATE_ADD(NOW(), interval 1 hour) '加1小时'; -- add 1 hour SELECT DATE_ADD(NOW(), interval 1 minute) '加1分钟'; -- add 1 minute SELECT DATE_ADD(NOW(), interval 1 second) '加1秒'; -- add 1 second SELECT DATE_ADD(NOW(), interval 1 microsecond) '加1微秒'; -- add 1 microsecond SELECT DATE_ADD(NOW(), interval 1 week) '加1周'; -- add 1 week SELECT DATE_ADD(NOW(), interval 1 month) '加1个月'; -- add 1 month SELECT DATE_ADD(NOW(), interval 1 quarter) '加1季度'; -- add 1 quarter SELECT DATE_ADD(NOW(), interval 1 year) '加一年'; -- add 1 year SELECT DATE_ADD(NOW(), interval '01:15:30' HOUR_SECOND) ; -- add 01:15:30 SELECT DATE_ADD(NOW(), interval '1 01:15:30' DAY_SECOND) ; -- add 1 01:15:30 SELECT DATE_ADD(NOW(), interval -1 year) '减一年'; -- sub 1 year SELECT DATE_SUB(NOW(), interval '01:15:30' HOUR_SECOND) ; -- sub 01:15:30 SELECT DATE_SUB(NOW(), interval '1 01:15:30' DAY_SECOND) ; -- sub 1 01:15:30 -- MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。 SELECT datediff('2021-07-08', '2021-07-01'); -- 7 SELECT datediff('2021-07-01', '2021-07-08'); -- -7 -- MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值。 SELECT timediff('2021-07-08 08:08:08', '2021-07-08 00:00:00'); -- 08:08:08 SELECT timediff('08:08:08', '00:00:00'); -- 08:08:08
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。