2014-04-18 90 views
0

我通過POST將變量「lasttime」發送到我的PHP腳本。這個變量包含一個字符串的時間戳。在我的MySQL數據庫中,我有一個'時間'列。此列的類型爲'TIMESTAMP',並通過更新當前時間戳進入。選擇特定日期的行

我想從變量$ lasttime中的時間戳之後的數據庫中選擇具有時間戳的所有行。

我的查詢:

SELECT * FROM mytable WHERE UNIX_TIMESTAMP(time) > '$lasttime' 

的問題是,所有的行返回。我該如何解決這個問題?

+1

請出示什麼'time'的例子'$ lasttime'樣子。你應該通過編輯問題來完成。 –

+0

$ lasttime例如是'1397855585' 並且數據庫中的值是例如'2014-04-18 19:01:07' –

+0

你對'$ lasttime'進行引號的方式,我認爲你是將日期與字符串'$ lasttime'進行比較,而不是它所表示的值。 – Jerry

回答

0

我現在已經改成了

$time = date("Y-m-d H:i:s", $lasttime); SELECT * FROM mytable WHERE timediff('$time',time) < 0

,它工作正常...

0

如果你傳遞$ lasttime字符串格式化的日期時間(例如2014年4月19日3時04分05秒),你必須先歸它u​​nixtime:$unixtime = strtotime($lasttime) 然後,SQL查詢看起來就像SELECT * FROM mytable WHERE UNIX_TIMESTAMP(time) > $unixtime

+0

來自數據庫的值是一個字符串。 '$ lasttime'中的值是一個數字。 –

+0

我試過'$ time = date(「Y-m-d H:i:s」,$ lasttime); $ query =「SELECT * FROM mytable WHERE time''$ time'」;'但它不起作用... –

+0

您的php和mysql實例是否使用相同的時區?他們兩人的時間是否同步? –

0

可以這樣做嗎?
$time = date("Y-m-d H:i:s", $lasttime); SELECT * FROM mytable WHERE timediff('$time',time) > 0

time是數據庫中的列。

+0

我剛纔試過,結果是一樣的......所有的行都被返回。 :-( –

相關問題