簡體   English   中英

10天前的SQL SELECT日期失敗

[英]SQL SELECT date from 10 days ago failed

我在使用SQL時遇到了一些麻煩:

首先,我使用PHP-time()插入當前日期:

mysql_query("
   INSERT INTO applicants (
      date_last_applied
   )
   VALUES (
      " . time() . "
   )
");

這樣很好。 但是,我只想在10天前插入^時執行操作:

$result = mysql_query("
   SELECT * FROM applicants WHERE date_last_applied < DATE_SUB(NOW(), INTERVAL 10 DAY)
");
while ($row = mysql_fetch_array($result)) 
    echo $row['id_member'];

盡管它應該可以工作(IMO),但不能。 d:

對於可能的解決方案:不能選擇使用其他時間格式,因為我在整個網站上都使用這種格式。

我認為將date_sub resutl轉換為unixtime將解決您的問題。

date_last_applied < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 10 DAY))

在插入行時,您正在使用本地計算機的時間(time())。 但是,在檢索行時,您正在使用mysql服務器的時間(NOW())。 您確定它們完全匹配,並且會繼續匹配。 您應該嘗試在所有地方使用mysql服務器時間。

另外,您正在申請人中插入行並從DDFS_applicants中檢索。 可能就是這里的問題

由於您使用的是時間戳記,而且我猜您沒有使用數據時間字段,因此轉換應該可以解決您的問題。 但是有一個但是!

UNIX_TIMESTAMP始終處於GMT中,因此可能是您的PHP time()與UNIX_TIMESTAMP不同。 如果您發現其相同,那么您應該很好!

date_last_applied < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 10 DAY))

好的,謝謝您的幫助。 這段代碼可以完美地工作:

 //get member's info
$result = mysql_query("
   SELECT * FROM DDFS_applicants 
   WHERE FROM_UNIXTIME(date_last_applied, '%Y %D %M') = FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)), '%Y %D %M')
");
while ($row = mysql_fetch_array($result)) {
    echo $row['id_member'];

(因此,它甚至可以檢查日期是否完全相同。如果需要,甚至可以增加幾個小時,但我選擇不這樣做。)

資料來源: http : //dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM