2013-12-18 24 views
1

我有兩個表,一個叫做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表示來自schedule表中startHour列的值,n是一個數字。更具體地說,如果slotSize是「01:00:00」,startHour的值是「09:00:00」,那麼startHour + slorSize * 3我希望看到一個示例 ,值爲「12 :00:00" 。

查詢的外觀應該如何?謝謝。

回答

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()函數,因爲我相信它需要日期部分工作。

+0

好的ideea將時間轉換爲秒。謝謝。但是仍然存在一個問題:我如何從2個不同的表中獲取slotSize和startHour? – Paul92

+0

很抱歉忘了即將到來的編輯結局。 – shadowjfaith

+0

@ Paul92讓我知道這是否適用於您,因爲如果出現這種情況,我可能會幫助您解決一些錯誤。 – shadowjfaith

相關問題