此问题与this question
有关我有一个字段,它是一个时间字段(它不需要是一个日期时间字段,因为日期部分在这里没有意义)。我要添加的值在另一个字段中,以分钟为单位。
所以基本上,我想在时间值上添加分钟。我已经尝试过DATE_ADD函数,但它希望日期是datetime,并设置datepart。我也试过了ADDTIME函数,但问题是持续时间字段是整分钟,而不是格式为hh:mm:ss,所以它只是将其添加为秒。
有没有人知道实现这个目标的方法?
[编辑]
这是当前的查询:
SELECT ADDTIME(startTime, duration * 60), startTime, duration FROM tblAppointment
JOIN tblThreatment ON tblThreatment.threatmentid = tblAppointment.threatment_id;
这就是结果:
+-----------------------------------+-----------+----------+
| ADDTIME(startTime, duration * 60) | startTime | duration |
+-----------------------------------+-----------+----------+
| 09:18:00 | 09:00:00 | 30 |
| 10:09:00 | 10:00:00 | 15 |
| 09:09:00 | 09:00:00 | 15 |
| 10:57:00 | 10:30:00 | 45 |
+-----------------------------------+-----------+----------+
答案 0 :(得分:23)
Addtime肯定是要走的路......只需添加一定的分钟数即可:
AddTime('00:00:00', '00:10:00')
这会使第一个值增加10分钟。
您可以在此处阅读dev.mysql.com上的更多信息:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_addtime
修改强>
除了你的评论。如果您以mm
的格式获取要添加的值,那么您可以使用SEC_TO_TIME()
函数解析时间值。像这样:
SELECT ADDTIME(startTime, SEC_TO_TIME(duration*60)), startTime, duration
FROM tblAppointment
JOIN tblThreatment ON tblThreatment.threatmentid = tblAppointment.threatment_id;
这将以hh:mm:ss
分钟格式返回时间。
答案 1 :(得分:2)
添加&的简单方法从日期和时间中减去间隔只是使用+
或-
和单词INTERVAL
:
SELECT startTime + INTERVAL 10 MINUTE
你可以添加&减去秒,分,天,周,月等。完整列表在这里https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-add
日期算术也可以使用INTERVAL和 +或 - 运算符:
date + INTERVAL expr unit date - INTERVAL expr unit
INTERVAL expr单位 如果表达式在+运算符的两侧允许 另一边是日期或日期时间值。对于 - 运营商,INTERVAL expr单位只允许在右侧,因为它没有 感觉从间隔中减去日期或日期时间值。
答案 2 :(得分:0)
也许在传递给TIMEADD
之前将':00'连接到分钟字段的值的末尾?或者,将该值乘以60。
答案 3 :(得分:0)
<强> TL:DR 强>
将分钟乘以100,而不是60
<强>说明强>
如果您希望以MM
格式添加分钟,就像您的示例中那样,并且避免将其转换为HH:MM:SS
格式,则应将分钟乘以100,而不是60:
SELECT ADDTIME(startTime, duration * 100), startTime, duration FROM tblAppointment
JOIN tblThreatment ON tblThreatment.threatmentid = tblAppointment.threatment_id;
这是因为MySQL文档说:
例如,您可能会将'1112'和1112视为'11:12:00'(11点后12分钟),但MySQL将其解释为'00:11:12'(11分钟, 12秒)。同样,'12'和12被解释为'00:00:12'。
所以你不想计算你有多少秒(例如:600 = 6分钟,而不是你认为的10分钟)
如果您想添加15或30分钟,只需添加1500或3000,就是这样。