MySQL:将X分钟添加到时间列

时间:2017-12-19 11:03:00

标签: mysql

我有一个带有时间的列和一个带有表示分钟的整数的列。现在我想添加/减去时间列中的分钟数。以下工作但感觉很奇怪(CURTIME在这里作为时间列,15作为int列):

SELECT ADDTIME(CURTIME(), CONCAT("00:" , 15, ":00")) AS foo FROM dual;

如何改进?

1 个答案:

答案 0 :(得分:2)

您可以INTERVALCURTIME()或类似地使用CURRENT_TIME()

SELECT CURTIME() + INTERVAL 15 MINUTE

如:

mysql> SELECT CURTIME() + INTERVAL 15 MINUTE;
+--------------------------------+
| CURTIME() + INTERVAL 15 MINUTE |
+--------------------------------+
| 12:23:24                       |
+--------------------------------+
1 row in set (0.01 sec)

mysql> 

对于您的情况,如果您的CURTIME()字段是TIME,并且持续时间是整数,那么它们应该只是插入确定,例如:

SELECT time_field + INTERVAL my_duration MINUTE

如果没有,那么您可以使用CAST()来获取正确的类型。

  

日期算术也可以使用INTERVAL和   +或 - 运算符:

date + INTERVAL expr unit
date - INTERVAL expr unit
     

INTERVAL expr单位   如果表达式在+运算符的两侧允许   另一边是日期或日期时间值。对于 - 运营商,INTERVAL   expr单位只允许在右侧,因为它没有   感觉从间隔中减去日期或日期时间值。

参考:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html