我有两个名为slotLength的表和一个名为schedule的表。以下是他们的描述:
+------------+------+------+-----+----------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------+------+-----+----------+-------+
| slotLength | time | NO | PRI | 00:00:00 | |
+------------+------+------+-----+----------+-------+
+-----------+-------------+------+-----+----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+----------+----------------+
| dayId | int(1) | NO | PRI | NULL | auto_increment |
| dayName | varchar(15) | YES | | NULL | |
| startHour | time | YES | | 08:00:00 | |
+-----------+-------------+------+-----+----------+----------------+
我知道他们没有最好的设计,但我还在学习。此外,他们只是一个实验,所以请忽略他们的设计中的错误。
在我继续之前,让我们假设slotLenght表只包含一行,让我们调用它的值slotSize。
我想计算startHour + slotSize * n,其中startHour表示调度表中startHour列的值,n是数字。更具体地说,让我们看一个例子, 如果slotSize为“01:00:00”且startHour的值为“09:00:00”,则startHour + slorSize * 3我希望价值“12:00:00”。
查询应该如何?谢谢。
答案 0 :(得分:1)
我不确定你是否可以在SQL中与时间字段相乘。加法和减法相当容易,但乘法会变得复杂一些。您可以使用ADDTIME()
作为等式的一部分,但我不确定乘法部分。一些较重的数学可能不得不发挥作用。
以下是MySQL时间函数列表
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
编辑:
或许转换为秒,乘法,然后转换回来的东西都可行。我对MySQL并不过分熟悉,所以希望有人会给你你想要的查询,但这应该让你开始尝试自己。
SELECT ADDTIME(startHour, SEC_TO_TIME(TIME_TO_SEC(slotSize) * 3)) AS Calculated
FROM Table, OtherTable
不确定是否需要^表,所以如果它没有它就可以忘记如果不将它扔到那里选择startHour。
我相信这接近你所期待的。正如我所说,不熟悉MySQL错误很可能在于等待ADDTIME()
函数,因为我认为它需要日期部分才能工作。