我正在研究強烈依賴正確日期的php/mysql應用程序。爲了確保插入到數據庫中的日期總是正確的,並且由於php/mysql的日期函數依賴於系統時鐘,我決定讓用戶在日期格式字段中輸入當前日期,然後將它與當前日期數據庫在將任何數據插入數據庫之前使用CURDATE()。比較用戶inputed字符串和mysql中的curdate
我不知道這是正確的方式去解決它還是他們更好的解決方案,以確保日期完整性?
我正在研究強烈依賴正確日期的php/mysql應用程序。爲了確保插入到數據庫中的日期總是正確的,並且由於php/mysql的日期函數依賴於系統時鐘,我決定讓用戶在日期格式字段中輸入當前日期,然後將它與當前日期數據庫在將任何數據插入數據庫之前使用CURDATE()。比較用戶inputed字符串和mysql中的curdate
我不知道這是正確的方式去解決它還是他們更好的解決方案,以確保日期完整性?
(升級到一個答案)通常
一會依靠系統時鐘是正確的;它比用戶輸入更受用戶自己控制,這可能是故意的或意外的錯誤。
我會建議使用CURDATE()
在你INSERT
聲明採取措施,比如運行Network Time Protocol客戶,讓您的系統時鐘正確的值,和。大多數現代操作系統不僅在默認情況下包含這樣的軟件,而且它們通常被配置並且開箱即用。
如果您的系統是獨立的,無法從網絡更新它的時間,您可能會考慮以下任何組合:從其他來源接收時間信號(例如通過無線電,如NPL signal);定期驗證系統時鐘(特別是在啓動時);監控CMOS電池並確保及時更換;或使用可充電電池。
爲什麼你懷疑你的系統時鐘可能是錯的?也許你想看看使用[ntp](http://en.wikipedia.org/wiki/Network_Time_Protocol)。 – eggyal 2012-04-27 09:09:07
cmos電池可能容易失效並且用戶可能不會注意 – sality 2012-04-27 09:12:08
CMOS電池僅用於在計算機斷電時維護系統時鐘;一旦它恢復供電,像ntp這樣的工具(參見上面的鏈接)可以幫助將時鐘恢復到正確的時間。 – eggyal 2012-04-27 09:14:51