跳到主要内容

查询中使用时间函数

本文通过具体示例介绍如何在查询中使用时间函数。

时间函数

seekdb 常用的时间类型有 DATE、TIMESTAMP、 TIME、DATETIME、YEAR 等,在 seekdb 下,常用的时间函数包括 NOW()、CURDATE() 和 CURTIME() 等。

示例

调整时间类型显示的格式

在 seekdb 下,可以用通过 NOW() 输出当前时间,使用 DATE_FORMAT 函数可以调整时间类型显示的格式。

SELECT NOW(),DATE_FORMAT(NOW(),"%Y/%M/%D %T") new_time;
+---------------------+-----------------------------+
| NOW() | new_time |
+---------------------+-----------------------------+
| 2025-12-23 18:15:36 | 2025/December/23rd 18:15:36 |
+---------------------+-----------------------------+
1 row in set

提取时间中的年、月、日、时、分、秒

在 seekdb 下,可以使用 EXTRACT() 函数从时间中提取年、月、日、时、分、秒信息。

SET @dt = NOW();
Query OK, 0 rows affected

SELECT @dt
, EXTRACT(YEAR FROM @dt) d_year
, EXTRACT(MONTH FROM @dt) d_month
, EXTRACT(week FROM @dt) d_week
, EXTRACT(DAY FROM @dt) d_day
, EXTRACT(HOUR FROM @dt) d_hour
, EXTRACT(MINUTE FROM @dt) d_min
, EXTRACT(SECOND FROM @dt) d_second
, EXTRACT(year_month FROM @dt) d_year_month
, EXTRACT(hour_minute FROM @dt) d_hour_min
\G

*************************** 1. row ***************************
@dt: 2025-12-23 18:15:53
d_year: 2025
d_month: 12
d_week: 51
d_day: 23
d_hour: 18
d_min: 15
d_second: 53
d_year_month: 202512
d_hour_min: 1815
1 row in set

时间类型的加减运算

在 seekdb 下,可以使用 DATE_ADD()DATE_SUB() 函数对时间进行加减,SQL 语句示例如下:

SET @dt = NOW();
Query OK, 0 rows affected

SELECT @dt
, DATE_ADD(@dt, INTERVAL 1 DAY ) t1
, DATE_ADD(@dt, INTERVAL 1 HOUR ) t2
, DATE_ADD(@dt, INTERVAL -10 MINUTE ) t3
, DATE_ADD(@dt, INTERVAL -1 MONTH ) t4
, DATE_ADD(@dt, INTERVAL 1 YEAR ) t5
\G

*************************** 1. row ***************************
@dt: 2025-12-23 18:16:11
t1: 2025-12-24 18:16:11
t2: 2025-12-23 19:16:11
t3: 2025-12-23 18:06:11
t4: 2025-11-23 18:16:11
t5: 2026-12-23 18:16:11
1 row in set

有关更多时间类型用法,参见 《SQL 参考》 章节。