我有两张桌子,一张叫slotLength,另一张叫时间表。下面是他们的描述:
+------------+------+------+-----+----------+-------+
| 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”。
查询应该是什么样的呢?谢谢。
发布于 2013-12-18 20:18:55
我不确定你能不能在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不确定是否需要^ Table,因此如果没有^Table,请忘记,如果不将^Table抛到其中以选择startHour。
我相信这和你要找的东西很接近。正如我所说的,不熟悉MySQL错误最有可能是等待,特别是ADDTIME()函数,因为我认为它需要日期部分才能工作。
https://stackoverflow.com/questions/20664358
复制相似问题