我想我遇到了MySQL 5.1的一個bug,但是這個錯誤發生在創建時間戳的perl代碼中。 perl的本地時間使用0-11個月,但MySQL的日期時間使用1-12。所以,我有所有這些格式不正確的時間戳,我需要更新。MySQL - 我的月份是當前存儲的0-11
2012-00-19 09:03:30
這應該是:
2012-01-19 09:03:30
的問題是,在00個月的MySQL返回NULL日期函數。有沒有辦法在MySQL中做到這一點?
編輯:解=
UPDATE test_stats
SET start_time = CAST(CONCAT(SUBSTRING(start_time, 1, 5),
CAST((CAST(SUBSTRING(start_time, 6, 2) AS UNSIGNED) + 1) AS CHAR(2)),
SUBSTRING(start_time, 8, 12)) AS DATETIME);
順便說一句,我採用的是MySQL 5.1
OK ,我喜歡Perl,但是誰認爲這是一個惡作劇d想法到零指數月份? –
您可以嘗試在MySQL中使用[dateadd](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add)函數將月份添加到每個條目。我不確定在空例中會發生什麼;你必須在MySQL命令行上試試才能發現。 –
Perl的gmtime/localtime本質上以Unix的struct tm作爲其參數,struct tm具有零索引的月份。這是一個相當臭名昭着的Perl陷阱,但它確實是Unix的錯。 – pndc