我有两张桌子,一张叫slotleng,一张叫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”。
查询应该是什么样子?谢谢您。

最佳答案

我不确定你能不能用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,所以如果它不起作用,请忘记是否将它放入其中以选择startHour。
我相信这正是你想要的。正如我所说,不熟悉MySQL错误很可能是等待,特别是对于ADDTIME()函数,因为我认为它需要日期部分才能工作。

关于mysql - 将从另一个表获得的值添加到所有行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20664358/

10-09 18:30