我有一个带有时间的列和一个带有表示分钟的整数的列。现在我想添加/减去时间列中的分钟数。以下工作但感觉很奇怪(CURTIME在这里作为时间列,15作为int列):
SELECT ADDTIME(CURTIME(), CONCAT("00:" , 15, ":00")) AS foo FROM dual;
如何改进?
答案 0 :(得分:2)
您可以INTERVAL
或CURTIME()
或类似地使用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