欢迎大家扫码关注我的微信公众号:
一、需求
在日常工作中我们可能会遇到 timestamp 型的字段(如会议开始时间)与 int 型的字段(如会议的持续时间)相加的情形。 MySQL 提供了一个 DATE_ADD() 函数可以实现我们需要的功能。
二、解决方案
MySQL 的 DATE_ADD() 函数向日期添加指定的时间间隔。
方法语法:
DATE_ADD(date, INTERVAL expr type)
date 参数是合法的日期表达式, MySQL 中的 timestamp 类型即可。
expr 参数是您希望添加的时间间隔。
type 参数是增加时间间隔的类型, 可以是下列值:
type 可选参数 |
---|
MICROSECOND |
SECOND |
MINUTE |
HOUR |
DAY |
WEEK |
MONTH |
QUARTER |
YEAR |
SECOND_MICROSECOND |
MINUTE_MICROSECOND |
MINUTE_SECOND |
HOUR_MICROSECON |
HOUR_SECOND |
HOUR_MINUTE |
DAY_MICROSECOND |
DAY_SECOND |
DAY_MINUTE |
DAY_HOUR |
YEAR_MONTH |
三、举例说明
假如我们有如下的表:
id meeting_name start_time duration
1 cybeyond 2018-12-12 12:12:12 7200
表明有一个叫 cybeyond 的会议将在 2018-12-12 12:12:12 召开, 预计会议持续时间为 2 小时(7200 秒)。
如果我们想要使用 cybeyond 会议的结束时间 end_time, 而数据库中只存在该会议的开始时间(start_time)和预计持续时间(duration), 但二者相加的结果就是我们需要的结束时间 —— end_time, 所以我们可以使用如下 SQL 语句:
mysql> SELECT DATE_ADD(start_time, INTERVAL duration SECOND) AS end_time FROM reserve;
end_time
2018-12-12 14:12:12
使用 date_add() 函数, 可以避免很多不必要的麻烦, 而且不必将数据取出来进行二次计算, 提高了程序的运行效率。