51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

MySQL中,时间函数有哪些?

嗨,你好呀,我是猿java

在 MySQL数据库中,提供了一系列获取时间的函数,这些函数在我们的日常开发中经常用到。这篇文章,我们将一一列举这些函数以及展示如何使用它们和它们的应用场景。

NOW() {#NOW}

NOW() 函数返回当前的日期和时间,格式为YYYY-MM-DD HH:MM:SS,它是日常开发中使用频率比较高的函数,用于获取服务器的当前时间。使用语法:

|-------------|------------------------------------------------------| | 1 2 | SELECT NOW(); -- 输出示例: '2024-10-30 14:30:00' |

使用场景

  • 记录数据插入或更新的时间戳。
  • 生成日志记录时标记时间。
  • 用于计算时间差。

CURDATE()和CURTIME() {#CURDATE-和CURTIME}

CURDATE()返回当前日期,格式为YYYY-MM-DD。 CURTIME()返回当前时间,格式为HH:MM:SS。使用语法如下:

|-------------------|---------------------------------------------------------------------------------------| | 1 2 3 4 5 | SELECT CURDATE(); -- 输出示例: '2024-10-30' SELECT CURTIME(); -- 输出示例: '14:30:00' |

使用场景

  • CURDATE() 常用于只需要日期部分的场景,如生日、纪念日。
  • CURTIME() 常用于需要时间部分的场景,如日程安排、会议时间。

UNIX_TIMESTAMP()和FROM_UNIXTIME() {#UNIX-TIMESTAMP-和FROM-UNIXTIME}

UNIX_TIMESTAMP()返回从1970-01-01 00:00:00 UTC到当前时间的秒数。 FROM_UNIXTIME()将 UNIX时间戳转换为 MySQL日期时间格式。使用语法如下:

|-------------------|-----------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | SELECT UNIX_TIMESTAMP(); -- 输出示例: 1696524600 SELECT FROM_UNIXTIME(1696524600); -- 输出示例: '2024-10-30 14:30:00' |

使用场景

  • UNIX_TIMESTAMP() 用于将日期时间转换为时间戳,以便进行时间差计算。
  • FROM_UNIXTIME() 用于将时间戳转换为可读的日期时间格式。

DATE_FORMAT() {#DATE-FORMAT}

DATE_FORMAT() 函数用于以指定格式返回日期/时间数据。格式化字符串可以包含日期和时间的各种部分,如年、月、日、小时、分钟等。使用语法如下:

|-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 输出示例: '2024-10-30 14:30:00' SELECT DATE_FORMAT(NOW(), '%W, %M %e, %Y'); -- 输出示例: 'Thursday, October 5, 2023' |

使用场景

  • 格式化输出日期以符合特定的业务需求。
  • 将日期时间转换为字符串进行显示。

ADDDATE()和ADDTIME() {#ADDDATE-和ADDTIME}

ADDDATE()用于向日期添加指定的天数, ADDTIME()用于向时间添加指定的时间。使用语法如下:

|-------------------|------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | SELECT ADDDATE('2024-10-30', INTERVAL 10 DAY); -- 输出示例: '2024-10-30' SELECT ADDTIME('14:30:00', '02:00:00'); -- 输出示例: '16:30:00' |

使用场景

  • ADDDATE() 用于计算未来的日期,比如到期日、未来的事件。
  • ADDTIME() 用于计算未来的时间,比如会议结束时间。

DATEDIFF()和TIMEDIFF() {#DATEDIFF-和TIMEDIFF}

DATEDIFF()用于计算两个日期之间的天数差,TIMEDIFF() 用于计算两个时间之间的时间差。使用语法如下:

|-------------------|-------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | SELECT DATEDIFF('2023-10-15', '2024-10-30'); -- 输出示例: 10 SELECT TIMEDIFF('16:30:00', '14:30:00'); -- 输出示例: '02:00:00' |

使用场景

  • DATEDIFF() 常用于计算两个日期之间的间隔,比如租赁天数、项目工期。
  • TIMEDIFF() 常用于计算两个时间点之间的时间差,比如工时计算。

YEAR(),MONTH(),DAY(),HOUR(),MINUTE(),SECOND() {#YEAR-MONTH-DAY-HOUR-MINUTE-SECOND}

这些函数用于从日期或时间中提取特定的部分,如年、月、日、小时、分钟、秒。使用语法如下:

|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()); -- 输出示例: 2024, 10, 30 SELECT HOUR(NOW()), MINUTE(NOW()), SECOND(NOW()); -- 输出示例: 14, 30, 0 |

使用场景

  • 提取日期时间的特定部分以进行进一步分析或计算。
  • 用于分组查询,如按月统计数据。

STR_TO_DATE() {#STR-TO-DATE}

STR_TO_DATE()函数将字符串转换为日期,根据指定的格式解析字符串。使用语法如下:

|-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | SELECT STR_TO_DATE('05-10-2023', '%d-%m-%Y'); -- 输出示例: '2024-10-30' SELECT STR_TO_DATE('October 5, 2023', '%M %d, %Y'); -- 输出示例: '2024-10-30' |

使用场景

  • 将用户输入的日期字符串转换为日期格式以存储到数据库。
  • 解析非标准格式的日期字符串。

LAST_DAY() {#LAST-DAY}

LAST_DAY()函数返回给定日期的月份的最后一天。使用语法如下:

|-------------|--------------------------------------------------------------| | 1 2 | SELECT LAST_DAY('2024-10-30'); -- 输出示例: '2024-10-30' |

使用场景

  • 计算某个月的结束日期,以便进行月末结算。
  • 生成月度报告时确定时间范围。

EXTRACT() {#EXTRACT}

EXTRACT()函数用于从日期或时间中提取特定的部分,与 YEAR(), MONTH()等函数类似,但提供了更灵活的提取选项。使用语法如下:

|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | SELECT EXTRACT(YEAR FROM NOW()), EXTRACT(MONTH FROM NOW()), EXTRACT(DAY FROM NOW()); -- 输出示例: 2024, 10, 30 SELECT EXTRACT(HOUR FROM NOW()), EXTRACT(MINUTE FROM NOW()), EXTRACT(SECOND FROM NOW()); -- 输出示例: 14, 30, 0 |

使用场景

  • 提取复杂日期时间中的特定部分。
  • 用于动态生成查询条件。

总结 {#总结}

MySQL 提供了丰富的时间函数,能够满足各种日期和时间处理需求。

本文,我们介绍了以下 MySQL 的时间函数,这些函数涵盖了日期和时间的获取、计算、格式化、转换等多种操作,可以满足不同的开发需求。总结如下:

  1. NOW() - 返回当前的日期和时间。
  2. CURDATE() - 返回当前日期。
  3. CURTIME() - 返回当前时间。
  4. UNIX_TIMESTAMP() - 返回从 '1970-01-01 00:00:00' UTC 到当前时间的秒数。
  5. FROM_UNIXTIME() - 将 UNIX 时间戳转换为 MySQL 日期时间格式。
  6. DATE_FORMAT() - 以指定格式返回日期/时间数据。
  7. ADDDATE() - 向日期添加指定的天数。
  8. ADDTIME() - 向时间添加指定的时间。
  9. DATEDIFF() - 计算两个日期之间的天数差。
  10. TIMEDIFF() - 计算两个时间之间的时间差。
  11. YEAR() - 从日期中提取年份。
  12. MONTH() - 从日期中提取月份。
  13. DAY() - 从日期中提取日。
  14. HOUR() - 从时间中提取小时。
  15. MINUTE() - 从时间中提取分钟。
  16. SECOND() - 从时间中提取秒。
  17. STR_TO_DATE() - 将字符串转换为日期。
  18. LAST_DAY() - 返回给定日期的月份的最后一天。
  19. EXTRACT() - 从日期或时间中提取特定的部分。

交流学习 {#交流学习}

最后,把猿哥的座右铭送给你:投资自己才是最大的财富。 如果你觉得文章有帮助,请帮忙转发给更多的好友,或关注公众号:猿java,持续输出硬核文章。

赞(2)
未经允许不得转载:工具盒子 » MySQL中,时间函数有哪些?