当前位置:   article > 正文

MySQL 中常用时间处理方法都在这里了(获取当前时间/格式化/转换/计算)_mysql 日期+1 去掉横杆

mysql 日期+1 去掉横杆


一、获取当前时间


-- 获得当前日期+时间(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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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 |
+---------------------+----------+---------------------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

二、时间格式化

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

三、时间格式转换


-- 获取当期时间戳数字
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

四、时间计算


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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/406542
推荐阅读
相关标签
  

闽ICP备14008679号