2010-11-07 120 views
0

我試圖存儲一週的時間表(例如星期一,上午9點至下午5點等)。我不需要存儲日期;我只需要保存以下內容:從時間到時間。將時間轉換爲MySQL時間

所以,說我有以下時間值:

  • 下午1:20
  • 8:00 AM

假設值是實際有效的時間,我該如何將這些字符串轉換爲MySQL時間類型?我該如何做相反的事情? (我正在使用PHP。)

另外,我該如何查詢類似這樣的內容:查找每週二在下午2點到3點之間開放的每家商店?我只是做一些事情:WHERE day = 1 AND from_time> = 2pm AND_time < = 3pm(當然,改變'2pm'和'3pm',無論它們的轉換值是什麼)?還是有一些MySQL函數更適合這種查詢?

回答

0

MySQL有一個TIME data type - 它將值存儲在HH:MI:SS格式,你可以使用TIME_FORMAT function改變呈現給你然而我喜歡。

儘量不要依靠應用於列作比較的功能 - IE:

WHERE TIME_TO_SEC(column) = 123 

...因爲它會呈現一個指數,如果一個列上存在的,沒用的 - 確保表掃描(表現最差的選項)。

1

MySQL已經內置在轉換爲UNIX時間戳到MySQL日期:

INSERT INTO table (the_date) VALUES (FROM_UNIXTIME(your_timestamp));

...和周圍的其他方法...

SELECT UNIX_TIMESTAMP(the_date) FROM table;

您可以使用DAY()DAYOFWEEK()功能在您的WHERE條件中將您的MySQL時間戳轉換爲相關單位,供您進行查詢。

您可能需要對模式進行一些調整以確定最佳結構,以便在此處獲得所需的功能。例如。在日期時間字段中存儲星期幾可能沒有意義。

+0

雖然我沒有Unix時間戳。我有3條信息:日期(星期),時間(字符串,如「1:30 pm」)和時間(又是一個字符串)。我誤解了你提出的答案嗎? – StackOverflowNewbie 2010-11-07 02:26:44

+0

你可以將它們作爲字符串存儲在MySQL中,並在每次你想對它們進行日期處理時解析它們,或者你可以將它們存儲爲絕對時間戳,並在顯示它們時丟棄它們不需要的所有數據,使您能夠使用MySQL函數和基於其值的查詢。如果你不知道如何去做,這聽起來像是一次php.net旅程,目的是爲了讓你熟悉可用的日期和時間函數。 – coreyward 2010-11-07 02:47:33

+0

我不應該試圖在MySQL中做這個東西嗎?例如,如果我有查詢,「找到每個星期一在下午2點到3點之間開放的商店」 - 那些存儲的值(如果按原樣存儲)對於此類查詢將毫無用處。 – StackOverflowNewbie 2010-11-07 04:32:35