2009-08-12 115 views
2

所以我得在MySQL一個簡單的查詢,設置一個新成員的截止日期,一旦他們繳納會費:MySQL DATE_ADD - 日期錯誤?

UPDATE members SET joined=CURDATE(), expires=DATE_ADD(CURDATE(), INTERVAL 1 YEAR), active='1' WHERE id=1000 

該查詢已運行超過200倍,通常與正確的結果 - 當前日期放入加入的字段中,並在expires字段中從該日期開始一年。但是,在大約10個實例中,到期日期已被設置爲00-00-0000,沒有明顯的解釋。我開始將查詢寫入文本文件,以確保語法正確,並且我沒有遺漏任何內容 - 而且我沒有 - 對於每個查詢來說,查詢(只有ID不同),這些查詢,那些沒有。

我唯一能想到的就是MySQL的DATE_ADD函數一定有問題。有沒有其他人經歷過這樣的事情?

更新: 我應該補充說明在過期日期不正確的情況下,連接字段與當前日期是否正確。

  • 我正在使用MySQL 5.0.81。
  • 沒有觸發器。
  • 該表使用的是MyISAM。

重要更新: 我是一個白癡 - 當我說11 - 30 - 1999年,這實際上不是什麼數據庫中。我心不在焉地寫道,但實際上數據庫包含的值00-00-0000 - 11-30-1999就是它如何通過PHP呈現在我的頁面上。對不起,希望這會讓這個問題變得更加困難。

+0

您能否爲不正確的行發佈'joined'的值? – Quassnoi 2009-08-12 17:00:46

+0

是的 - 最近兩次同時發生。加入實際上只存儲日期(都是'8-4-05'),但該行在查詢運行之前被創建,並且是時間戳 - '2009-08-04 22:38:20'。另一個是在此之後幾秒鐘。 – Joel 2009-08-12 17:23:19

回答

0

只是一個念頭....那些「錯誤」的日期並沒有發生閏年日期,他們......例如2月29日?

它應該沒關係,但它可能是一個錯誤。

+0

不,已創建的新記錄的當前日期爲現在(2009年7月/ 8月),並在2010年到期。 – Joel 2009-08-12 16:37:48