最近我們在使用MySQL時遇到了一個問題,時間戳字段突然變成了1969年1月1日,而且所有的時間戳都發生了這個問題。我們分析了一下,發現是我們的程序在存儲時間戳時出現了問題,導致MySQL無法正確識別時間戳的格式。
// PHP代碼 $timestamp = strtotime('2022-07-01 11:00:00'); $sql = "INSERT INTO `table_name` (`timestamp_column`) VALUES ('$timestamp')"; mysqli_query($conn, $sql);
我們注意到在程序中使用了strtotime函數,該函數會將字符串轉化為時間戳,但是在轉化過程中如果出現問題,會返回false,此時就會等同于0,而1970年1月1日之前的時間戳都是負數。因此,當程序返回的時間戳為0時,實際上存儲到MySQL中的就是負數的時間戳。
為了避免這個問題,我們需要在程序中增加一個判斷,如果返回false,則說明字符串不符合時間格式,應該拋出異常并提示用戶重新輸入。
// PHP代碼 $timestamp = strtotime('2022-07-01 11:00:00'); if($timestamp === false){ throw new Exception("時間格式錯誤,請重新輸入"); } $sql = "INSERT INTO `table_name` (`timestamp_column`) VALUES ('$timestamp')"; mysqli_query($conn, $sql);
這樣我們就能夠避免MySQL時間戳變成1969年的問題了。
上一篇css代碼的上下移動
下一篇mysql時間戳到秒級