问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MySQL:一文掌握数据库日期时间函数及用法

创作时间:
作者:
@小白创作中心

MySQL:一文掌握数据库日期时间函数及用法

引用
CSDN
1.
https://blog.csdn.net/it_beecoder/article/details/145666477

在MySQL数据库中,日期时间函数是处理日期和时间数据的重要工具。无论是数据查询、数据处理还是数据展示,掌握这些函数都能大大提高开发效率。本文将详细介绍MySQL中常用的日期时间函数及其用法。

1. MySQL中的日期时间函数

  1. CURDATE() 和 CURTIME():分别返回当前日期和当前时间。常用于获取系统当前日期和时间。

  2. NOW():返回当前日期和时间的组合值,格式:YYYY-MM-DD HH:MM:SS,常用于记录事件发生的具体时间。

  3. DATE() 和 TIME():分别提取日期和时间部分。例如,DATE('2023-10-05 14:30:00')返回 2023-10-05,而 TIME('2023-10-05 14:30:00') 返回 14:30:00。

  4. YEAR()、MONTH() 和 DAY():分别提取日期中的年份、月份和日。

  5. STR_TO_DATE() 和 DATE_FORMAT():用于将字符串转换为日期时间格式,或将日期时间格式化为字符串。
    例如:

    STR_TO_DATE('2023-10-05', '%Y-%m-%d')
    

    将字符串转换为日期,而
    DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s')
    将当前日期时间格式化为指定的字符串格式。

  6. SYSDATE() 返回当前日期时间(与 NOW() 类似,但 SYSDATE() 在函数执行时动态获取值)。

    SELECT SYSDATE();
    
  7. EXTRACT(unit FROM date) 按指定单位提取日期时间部分(如 YEAR, MONTH, DAY, HOUR 等)。

    SELECT EXTRACT(YEAR_MONTH FROM '2024-10-25');
    

2. 日期时间计算函数

  1. DATE_ADD 在MySQL中,DATE_ADD函数用于向指定的日期或时间值添加一个特定的时间间隔,并返回新的日期或时间值。用法为:
    DATE_ADD(date, INTERVAL expr unit)
    
    其中:
  • date表示要操作的日期或时间值,是一个日期、时间或日期时间类型的表达式;
  • INTERVAL:关键字,用于指定要添加的时间间隔;
  • expr:时间间隔的数量,可以是一个整数或表达式;
  • unit:表示时间间隔的单位,常用的有:
    MICROSECOND:微秒
    SECOND:秒
    MINUTE:分钟
    HOUR:小时
    DAY:天
    WEEK:周
    MONTH:月
    QUARTER:季度
    YEAR:年
    SECOND_MICROSECOND:秒和微秒
    MINUTE_MICROSECOND:分钟和微秒
    MINUTE_SECOND:分钟和秒
    HOUR_MICROSECOND:小时和微秒
    HOUR_SECOND:小时和秒
    HOUR_MINUTE:小时和分钟
    DAY_MICROSECOND:天和微秒
    DAY_SECOND:天和秒
    DAY_MINUTE:天和分钟
    
  1. DATE_ADD 使用示例
    例1:向当前日期添加7天

    SELECT DATE_ADD(CURDATE(), INTERVAL 7 DAY)
    

    假设当前日期是 2023-10-05,上述查询将返回 2023-10-12

    例2:向指定日期添加1个月

    SELECT DATE_ADD('2023-10-05', INTERVAL 1 MONTH)
    

    上述查询将返回2023-11-05

    例3:向当前时间添加3小时

    SELECT DATE_ADD(CURTIME(), INTERVAL 3 HOUR)
    

    假设当前时间是15:10:00,上述查询将返回18:10:00

    例4:向指定日期时间添加1年和2个月

    SELECT DATE_ADD('2023-10-05 14:30:00', INTERVAL 1 YEAR_MONTH)
    
  2. DATE_SUB函数的基本语法
    在MySQL中,DATE_SUB函数与DATE_ADD函数相对应,用于从指定的日期或时间值中减去一个特定的时间间隔,并返回新的日期或时间值。用法为:

    DATE_SUB(date, INTERVAL expr unit)
    

    参数和DATE_ADD 的参数含义类似。

  3. DATE_SUB 使用示例
    例1:从当前日期减去7天

    SELECT DATE_SUB(CURDATE(), INTERVAL 7 DAY);
    

    例2:从指定日期减去1个月

    SELECT DATE_SUB('2024-10-05', INTERVAL 1 MONTH);
    

    例3:从当前时间减去3小时

    SELECT DATE_SUB(CURTIME(), INTERVAL 3 HOUR);
    

    例4:从指定日期时间减去1年2个月

    SELECT DATE_SUB('2024-10-05 14:30:00', INTERVAL 1 YEAR_MONTH);
    

    上述查询将返回2023-08-05 14:30:00。

  4. DATEDIFF(date1, date2) 计算两个日期之间的天数差(date1 - date2)。

    SELECT DATEDIFF('2023-10-25', '2023-10-20'); -- 5
    
  5. TIMEDIFF(time1, time2) 计算两个时间的差值(格式:HH:MM:SS)。

    SELECT TIMEDIFF('14:30:00', '12:15:00'); -- 02:15:00
    
  6. TIMESTAMPDIFF(unit, start, end) 按指定单位(如 YEAR, MONTH, DAY, HOUR)计算时间差。

    SELECT TIMESTAMPDIFF(YEAR, '2000-05-20', '2023-10-25'); -- 23
    

3. 日期时间格式化

  1. DATE_FORMAT(date, format) 将日期时间按指定格式转换为字符串。
    常用格式符:
    
    
  • %Y:四位年份(2023)
  • %y:两位年份(23)
  • %m:两位月份(01-12)
  • %d:两位日期(01-31)
  • %H:24小时制小时(00-23)
  • %i:分钟(00-59)
  • %s:秒(00-59)
  • %W:星期名(Wednesday)
  • %M:月份名(October)
    
    ```sql
    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
    
    输出为:2025-02-16 15:43:56
  1. STR_TO_DATE(str, format) 将字符串按指定格式转换为日期时间。
    SELECT STR_TO_DATE('25-10-2023', '%d-%m-%Y');
    
    输出为:2025-02-16

4. 日期时间转换

  1. UNIX_TIMESTAMP([date]) 将日期时间转换为 UNIX 时间戳(从 1970-01-01 开始的秒数)。

    SELECT UNIX_TIMESTAMP('2023-10-25 14:30:45');
    

    输出:1698251445

  2. FROM_UNIXTIME(unix_timestamp[, format]) 将 UNIX 时间戳转换为日期时间,可选格式化。

    SELECT FROM_UNIXTIME(1698251445);
    

    输出:2023-10-25 14:30:45

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号