在MySQL中添加一些时间分钟

时间:2009-09-15 09:21:40

标签: mysql datetime

此问题与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 |
+-----------------------------------+-----------+----------+

4 个答案:

答案 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,就是这样。