SQL日期函数

日期函数

在 SQL 中,日期函数用于处理和操作日期和时间数据。这些函数可以帮助你执行各种日期相关的操作,如提取日期部分、计算日期差、格式化日期等。以下是一些常用的日期函数及其用法。

1. 获取当前日期和时间

  • NOW():返回当前日期和时间。
  • CURDATE():返回当前日期。
  • CURTIME():返回当前时间。
示例:
SELECT NOW() AS current_datetime, CURDATE() AS current_date, CURTIME() AS current_time;

结果:

current_datetime current_date 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 表,包含以下数据:

employee_id first_name last_name hire_date
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;

结果:

employee_id first_name last_name hire_date hire_year hire_month hire_day
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;

结果:

employee_id first_name last_name hire_date hundred_days_later
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;

结果:

employee_id first_name last_name formatted_hire_date
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;

结果:

employee_id first_name last_name hire_date day_of_week last_day_of_month
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
全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务