我正在研究强烈依赖正确日期的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