所以我得在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呈現在我的頁面上。對不起,希望這會讓這個問題變得更加困難。
您能否爲不正確的行發佈'joined'的值? – Quassnoi 2009-08-12 17:00:46
是的 - 最近兩次同時發生。加入實際上只存儲日期(都是'8-4-05'),但該行在查詢運行之前被創建,並且是時間戳 - '2009-08-04 22:38:20'。另一個是在此之後幾秒鐘。 – Joel 2009-08-12 17:23:19