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
全部评论

相关推荐

03-14 11:23
已编辑
北京邮电大学 管理咨询
211勇闯初创小公司头破血流系列3这件事不是发生在我身上的,但前同事们参与创作的积极性空前高涨,为了习惯,还是都采用第一人称的视角来看这出大戏。有一天老板在我们的眼皮底下接了一个电话,最终敲定了去北京出差的时间,下周一。他得意洋洋地说,这单下来保底五百万的流水,如果成了,我们都能得到五位数的提成。这对于一群刚上班的人来说是天大的诱惑,我们经历了周末的无偿加班,把他去北京所需要的文件都准备好了。只是在去北京的周一当天,老板睡过头了。整个上午都没见他的踪影,给他发文件也不会,打电话问问题也不接,直到中午才姗姗来迟。当然,这只是拉开了这场恐怖出差的序幕。只见他来了也不紧不慢的,手指在办公室转了一圈,...
姜大力:补充: 1.五百万的单子根本没有五百万,只是过去展示拼装的产品并简单考察。该项目只是竞标,项目内容是商业街区改造; 2.决策是当天上午10点半左右老板珊珊来迟后突发奇想去北京,中午1点在催促下着急出发,没有任何出差补助; 3.出发之前已经知道进京证不好使了,但还是执意要开车去; 4.实习生实打实连续开了***小事车,非常辛苦,工资在转正后只有两千五; (有疑问会继续补充)
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务