mysql中的时间、时间戳

mysql5.7文档:https://www.docs4dev.com/docs/zh/mysql/5.7/reference/

mysql5.7日期函数文档:https://www.docs4dev.com/docs/zh/mysql/5.7/reference/date-and-time-functions.html

mysql 中的时间函数

一、常见获取日期方式
1. 获取当前日期
1
2
3
4
-- 获取当前日期
SELECT CURRENT_DATE; -- 2022-02-16
SELECT CURRENT_DATE(); -- 2022-02-16
SELECT CURDATE(); -- 2022-02-16
2.获取当前的日期时间
1
2
3
4
5
6
7
8
-- 获取当前日期时间
SELECT NOW(); -- 2022-02-16 13:39:59
SELECT CURRENT_TIMESTAMP; -- 2022-02-16 13:47:33
SELECT CURRENT_TIMESTAMP; -- 2022-02-16 13:48:14
SELECT LOCALTIME; -- 2022-02-16 14:10:55
SELECT LOCALTIME(); -- 2022-02-16 14:11:11
SELECT LOCALTIMESTAMP; -- 2022-02-16 14:11:38
SELECT LOCALTIMESTAMP(); -- 2022-02-16 14:11:38
3.获取当前时间
1
2
3
4
-- 获取当前时间
SELECT CURTIME(); -- 13:39:49
SELECT CURRENT_TIME; -- 13:39:49
SELECT CURRENT_TIME(); -- 13:39:49
4.获取UTC时间、日期
1
2
3
4
-- 返回标准的 UTC 时间
SELECT UTC_DATE(); -- 日期
SELECT UTC_TIME(); -- 时间
SELECT UTC_TIMESTAMP; -- 日期时间
5. 获取时间戳
1
2
3
-- 当前时间戳
SELECT UNIX_TIMESTAMP(); -- 1644990325 秒
SELECT UNIX_TIMESTAMP() * 1000; -- 1644990325000 毫秒
二、时间计算
1. 日期的相加:DATE_ADD 和 ADDDATE
1
2
3
4
5
6
7
8
9
10
-- 添加时间(可正可负数) INTERVAL表示间隔
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); -- 2022-02-17 13:52:19
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR); -- 2022-02-17 14:52:19
SELECT DATE_ADD(NOW(), INTERVAL -1 DAY); -- 2022-02-15 13:53:07
SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND); -- 2022-02-16 13:53:54
SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE); -- 2022-02-16 13:55:44
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH); -- 2022-03-16 13:57:09
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR); -- 2023-02-16 13:57:41
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR_MONTH); -- 2022-03-16 14:02:57
SELECT ADDDATE(NOW(), INTERVAL 1 MONTH) -- 2022-03-16 14:28:04
2. 日期的相减:DATE_SUB 和 SUBDATE
1
2
3
4
5
6
7
8
9
10
-- 减去时间(可正可负数) INTERVAL表示间隔
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY); -- 2022-02-15 14:01:44
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR); -- 2022-02-16 13:01:58
SELECT DATE_SUB(NOW(), INTERVAL -1 DAY); -- 2022-02-17 14:02:08
SELECT DATE_SUB(NOW(), INTERVAL 1 SECOND); -- 2022-02-16 14:02:23
SELECT DATE_SUB(NOW(), INTERVAL 1 MINUTE); -- 2022-02-16 13:55:44
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); -- 2022-01-16 14:02:43
SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR); -- 2021-02-16 14:03:24
SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR_MONTH); -- 2022-01-16 14:03:15
SELECT SUBDATE(NOW(), INTERVAL 1 HOUR); -- 2022-02-16 13:27:34
三、日期时间转换
1. 时间转时间戳
1
2
-- 将时间戳转为日期 10 位
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
2. 日期转时间戳
1
SELECT UNIX_TIMESTAMP(NOW()); -- 1644993452
3. 时间转字符串
1
2
-- 指定日期格式
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%m:%s'); -- 2022-02-16 14:02:27
4. 字符串转时间
1
2
-- 字符串转日期
SELECT STR_TO_DATE('2022-02-16', '%Y-%m-%d'); -- 2022-02-16
四、获取某个时间
1. 日期的年月日时分秒获取
1
2
3
4
5
6
7
-- 获取年月日时分秒
SELECT YEAR(NOW()); -- 2022
SELECT MONTH(NOW()); -- 2
SELECT DAY(NOW()); -- 16
SELECT HOUR(NOW()); -- 14
SELECT MINUTE(NOW()); -- 30
SELECT SECOND(NOW()); -- 59
2. 星期获取
1
2
3
4
-- 星期数
SELECT WEEKDAY(NOW()); -- 2
SELECT WEEK(NOW()); -- 7
SELECT WEEKOFYEAR(NOW()); -- 7
3. 获取昨天
1
2
3
4
5
-- 昨天
SELECT DATE_ADD(NOW(), INTERVAL -1 DAY);
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);
SELECT ADDDATE(NOW(), INTERVAL -1 DAY);
SELECT SUBDATE(NOW(), INTERVAL 1 DAY);
4. 获取明天
1
2
3
4
5
-- 明天
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
SELECT DATE_SUB(NOW(), INTERVAL -1 DAY);
SELECT ADDDATE(NOW(), INTERVAL 1 DAY);
SELECT SUBDATE(NOW(), INTERVAL -1 DAY);
5. 获取上周:WEEK,MONTH,YEAR,HOUR,MINUTE,SECOND
1
2
3
4
5
-- 上周
SELECT DATE_ADD(NOW(), INTERVAL -1 WEEK);
SELECT DATE_SUB(NOW(), INTERVAL 1 WEEK);
SELECT ADDDATE(NOW(), INTERVAL -1 WEEK);
SELECT SUBDATE(NOW(), INTERVAL 1 WEEK);
6. 获取下周:WEEK,MONTH,YEAR,HOUR,MINUTE,SECOND
1
2
3
4
5
-- 下周
SELECT DATE_ADD(NOW(), INTERVAL 1 WEEK);
SELECT DATE_SUB(NOW(), INTERVAL -1 WEEK);
SELECT ADDDATE(NOW(), INTERVAL 1 WEEK);
SELECT SUBDATE(NOW(), INTERVAL -1 WEEK);
7. 获取某天的几点
1
2
SELECT DATE_ADD(CURDATE(), INTERVAL 0 HOUR); -- 当天0点
SELECT DATE_ADD(DATE_SUB(CURDATE(), INTERVAL 1 DAY), INTERVAL 0 HOUR); -- 昨天0点

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!