SQL日期函数
日期函数
在 SQL 中,日期函数用于处理和操作日期和时间数据。这些函数可以帮助你执行各种日期相关的操作,如提取日期部分、计算日期差、格式化日期等。以下是一些常用的日期函数及其用法。
1. 获取当前日期和时间
NOW()
:返回当前日期和时间。CURDATE()
:返回当前日期。CURTIME()
:返回当前时间。
示例:
SELECT NOW() AS current_datetime, CURDATE() AS current_date, CURTIME() AS current_time;
结果:
2025-04-01 17:48:56 | 2025-04-01 | 17:48:56 |
2. 提取日期部分
YEAR(date)
:提取日期的年份部分。MONTH(date)
:提取日期的月份部分。DAY(date)
:提取日期的日部分。HOUR(time)
:提取时间的小时部分。MINUTE(time)
:提取时间的分钟部分。SECOND(time)
:提取时间的秒部分。
3. 日期计算
DATE_ADD(date, INTERVAL expr type)
:在日期上加上一个时间间隔。DATE_SUB(date, INTERVAL expr type)
:从日期中减去一个时间间隔。DATEDIFF(date1, date2)
:计算两个日期之间的天数差。
4. 格式化日期
DATE_FORMAT(date, format)
:将日期格式化为指定的格式。
5. 其他日期函数
DAYOFWEEK(date)
:返回日期是星期几(1 = 星期天,2 = 星期一,...,7 = 星期六)。DAYOFYEAR(date)
:返回日期是一年中的第几天。WEEK(date)
:返回日期是一年中的第几周。LAST_DAY(date)
:返回指定日期所在月份的最后一天。
示例
假设有一个 employees
表,包含以下数据:
1 | Alice | Smith | 2021-01-15 |
2 | Bob | Johnson | 2022-02-20 |
3 | Charlie | Brown | 2023-03-10 |
提取日期部分
查询每个员工的入职年份、月份和日期:
SELECT
employee_id,
first_name,
last_name,
hire_date,
YEAR(hire_date) AS hire_year,
MONTH(hire_date) AS hire_month,
DAY(hire_date) AS hire_day
FROM
employees;
结果:
1 | Alice | Smith | 2021-01-15 | 2021 | 1 | 15 |
2 | Bob | Johnson | 2022-02-20 | 2022 | 2 | 20 |
3 | Charlie | Brown | 2023-03-10 | 2023 | 3 | 10 |
日期计算
查询每个员工入职后的第 100 天:
SELECT
employee_id,
first_name,
last_name,
hire_date,
DATE_ADD(hire_date, INTERVAL 100 DAY) AS hundred_days_later
FROM
employees;
结果:
1 | Alice | Smith | 2021-01-15 | 2021-04-25 |
2 | Bob | Johnson | 2022-02-20 | 2022-05-31 |
3 | Charlie | Brown | 2023-03-10 | 2023-06-18 |
格式化日期
查询每个员工的入职日期,并按 YYYY-MM
格式返回:
SELECT
employee_id,
first_name,
last_name,
DATE_FORMAT(hire_date, '%Y-%m') AS formatted_hire_date
FROM
employees;
结果:
1 | Alice | Smith | 2021-01 |
2 | Bob | Johnson | 2022-02 |
3 | Charlie | Brown | 2023-03 |
其他日期函数
查询每个员工入职日期的星期几和所在月份的最后一天:
SELECT
employee_id,
first_name,
last_name,
hire_date,
DAYOFWEEK(hire_date) AS day_of_week,
LAST_DAY(hire_date) AS last_day_of_month
FROM
employees;
结果:
1 | Alice | Smith | 2021-01-15 | 6 | 2021-01-31 |
2 | Bob | Johnson | 2022-02-20 | 1 | 2022-02-28 |
3 | Charlie | Brown | 2023-03-10 | 6 | 2023-03-31 |