2011-03-01 18 views
0

在我的腳本中,我在數據庫中存儲了一個PHP time()值。 我有一個簡單的解決方案,但我敢打賭,它肯定不是最「乾淨」的解決方案。什麼是time()的MYSQL變體?

<?php 
    $time = time(); 
    mysql_query("DELETE FROM table WHERE expire < '$time';"); 
    ?> 

是否有一個與PHP time()函數格式相同的MySQL函數?

  • 我列的類型爲int(10)
  • 我只是需要做一個簡單的服務器端比較,我從來沒有顯示。

在此先感謝! PS:請通過糾正我的支持我的英文:)

編輯:我會用UNIX_TIMESTAMP()去了,感謝所有的,對我的幫助和討論有關的最佳選擇。

+2

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html – kjy112 2011-03-01 17:02:08

+1

我只花5秒在google上找到上面的鏈接。 – 2011-03-01 17:03:54

+0

@SuperSpy:除非它爲你完成所有工作,並且沒有研究或努力投入自己,否則它沒有幫助?真的嗎?你是唯一瞭解你的需求的人,現在你有工具來滿足他們。 – 2011-03-01 17:39:32

回答

2
SELECT UNIX_TIMESTAMP(); // returns 1298999053 for example 

這樣:

mysql_query("DELETE * FROM table WHERE expire < UNIX_TIMESTAMP()"); 
+0

看我的編輯爲什麼這是不好的。 – 2011-03-01 17:13:15

+0

@AmirRaminfar好了,答案是'什麼是MYSQL時間變量()?',而不是'我怎麼能在mysql中存儲日期' – delphist 2011-03-01 17:44:24

+0

不要原諒自己的問題。有一堆不好的問題,根本不應該回答。但是,我認爲unix時間戳不是那麼糟糕。 – 2011-03-01 17:56:15

1

在MySQL中,函數被調用now()。

DELETE * FROM table WHERE expire < now(); 
+0

Now()給出這種格式:'2007-12-15 23:50:26'where time()給出這種格式:1298995533 所以你不能比較它們,或者你可以嗎? – SuperSpy 2011-03-01 17:27:47

+0

@SuperSpy - 請參閱Amir Raminfar的編輯。過期列應該是DATETIME類型,然後NOW()更適合。如果它不是這種格式,那麼你是正確的,但我會改變它,因爲DATETIME在大多數情況下更有用。 – Galz 2011-03-01 17:31:46

+0

好吧,看起來像'1298995533'的時間()格式更有效率......我不需要顯示時間,我的服務器只需要將當前時間與過期時間進行比較。我的列類型是INT(10),我認爲它會完成這項工作。 有沒有更好的方法? – SuperSpy 2011-03-01 17:35:12

3

是的。你可以使用now函數。

mysql_query("DELETE * FROM table WHERE expire < NOW();"); 

編輯:我鼓勵您使用此功能,而不是UNIX_TIMESTAMP。原因是您應該將您的列類型設置爲DATE並且時間不長。在這種情況下,您可以在不容易處理時間戳值的日期列上執行時間函數。

+0

@AmirRaminfar:現在有人剛剛低估了我們兩人。 :(我想知道爲什麼人們做這樣的事情,而不是解釋他們爲什麼不喜歡答案... – Galz 2011-03-01 17:10:12

+0

是的確,我想知道爲什麼,你被鼓勵寫評論,但這個人沒有解釋爲什麼 – 2011-03-01 17:11:20

+0

@Galz - 你應該upvote我;) – 2011-03-01 17:14:21