我有一個表中的記錄存儲使用php的strtotime
函數。我需要和沒有任何經驗的是在兩週內查詢數據庫中的所有記錄。從使用mysql的時間戳之前2周選擇記錄
對不起,我沒有代碼顯示,因爲使用時間戳對我來說都是如此新鮮。
我有一個表中的記錄存儲使用php的strtotime
函數。我需要和沒有任何經驗的是在兩週內查詢數據庫中的所有記錄。從使用mysql的時間戳之前2周選擇記錄
對不起,我沒有代碼顯示,因爲使用時間戳對我來說都是如此新鮮。
如果您的日期存儲爲一個時間戳,這是很容易採取兩個星期吧:
select
*
from
yourTable
where
dateField<=UNIX_TIMESTAMP()
and dateField>=(SELECT UNIX_TIMESTAMP()- 60*60*24*14)
由於這些都是在幾秒鐘內,只需減去60秒×60分鐘×24小時X14天你有你所需的條件。
僅供參考:時間戳僅僅是自從unix epoch以來經過的秒數,因此加法或減法非常簡單。如果你想要一個特定的日期,你也可以使用PHP的mktime生成一個時間戳。
一遍又一遍地計算秒是例如MySQL不會進行優化,每次執行查詢時都需要計算它。 bishop的答案因此更好,因爲它可以通過DBMS輕鬆優化。這個評論可能在將來或任何其他數據庫管理系統中都不是這樣的! – Fleshgrinder
@Fleshgrinder是的,但是在幾秒鐘內解釋它(即,一個時間戳是什麼)從長遠來看可能比僅僅教導某人使用時間與mysql'now()'功能相比更有益 - 有點難以使用,如果你想指定一個特定的兩週差距:) – Fluffeh
絕對正確,但你可以簡單地在你的查詢中包含'1209600',因爲你的詳細和完美的解釋直接遵循。 Upvoted你的。 ;)哦,'CURRENT_TIMESTAMP'是一個魔術常量,理論上比'UNIX_TIMESTAMP()'更快;但請注意,我從來沒有爲它做過任何基準測試(根據許多其他編程知識的簡單假設)。 – Fleshgrinder
從內存:
SELECT * FROM Foo WHERE bar BETWEEN (NOW() - INTERVAL 2 WEEK) AND NOW()
與任何東西是時間戳相關的()現在更換。我目前正在與我的平板電腦搏鬥,所以我無法檢查這是否完全正確。祝你好運。
你忘記了我想的date_sub()函數。 –
您在數據庫中有數字時間戳。你知道如何生成「2周前」的時間戳嗎?如果是這樣,你就會在查詢中比較整數。 – Madbreaks
@Madbreaks我不知道如何處理時間戳,所以答案是否定的,我不知道如何做到這一點 – jkushner
+1不明原因的反對票 – bishop