2013-07-03 92 views
0

這是一個面試問題: 給定一個數據庫(mysql或同等學歷),每個記錄都有列'開始時間'和'結束時間' 我被要求獲取記錄當前系統時間位於開始時間和結束時間之間。但開始和結束時間是時間戳(YYYY-MM-DD HH:MM:SS)。所以我只能尋找那些時間部分(HH:MM:SS)落在範圍內的人(顯然是同一天不會重複:))。當前時間的讀取記錄落在一個範圍內

+0

我想這個面試問題正在測試你的Google能力嗎?這樣的問題只會導致查詢爲正在使用的_database服務器查找適當的日期/時間函數_而實際上並不是被採訪者的任何功能。如果可以的話,我會低估實際的面試問題。 –

回答

0

是否這樣?

SELECT * 
FROM table 
WHERE CURRENT_TIMESTAMP BETWEEN start_time and end_time 
+0

沒有問什麼。他只關心時間戳的時間部分。日期部分不相關,應該剝離/標準化。 –

+0

我只想要時間部分,但開始時間就像mysql中的日期時間格式 – username

0

這個問題是高度數據庫引擎的依賴。幾乎每個數據庫都有自己的功能。在面試中說mysql or equivalent問題與詢問你是否知道那些特定的mysql函數大致相同......順便說一句,主要數據庫最不像標準實際定義的函數,部分原因是因爲mysql的使用歷史unix時間。 MySQL就像數據庫的VB6一樣,這個問題強烈表明面試官要麼不知道這一點,要麼厭倦了採訪那些沒有意識到這一點的開發人員。

完全標準的SQL參考需要收費下載,但我沒有找到你的SQL-92標準的日期和時間數據類型和操作在這裏參考:

http://www.ibphoenix.com/resources/documents/design/doc_169

0
SELECT * 
    FROM MyTable T 
WHERE TIME_TO_SEC(CURRENT_TIMESTAMP) BETWEEN TIME_TO_SEC(T.start_time) 
     AND TIME_TO_SEC(T.end_time) 
+0

你去@Curt。 Goofiness-1。 –

+0

做time_to_sec採取日期時間格式並轉換爲時間或secs? – username

相關問題