服务器日期时间vs客户端日期时间



我很可能错过了一些简单的解决方案,但我有一个可执行文件(用c++编写),我使用和/或保存当前日期时间到SQLite或Sybase数据库(可执行的数据库都在服务器上)的问题是,我希望它使用的日期时间从服务器计算机(数据库在哪里),而不是使用客户端的日期时间。有没有办法让数据库给出计算机所在位置的时间或者其他方式获取服务器时间?这是可能的,或者我有确保客户端将与服务器相同的时间?

现在我只是使用一个简单的sql查询:

Select dateTime('now'); //for SQLite
Select Now(*); //for Sybase
编辑:Sybase已经给你正确的服务器时间,所以我只寻找SQLite解决方案

唯一真正的解决方案是通过使用ntp或sntp来保持所有机器的时间同步。比任何其他解决方案都更容易和准确,并且所有现代操作系统都有与时间服务器同步的标准规定。

你可以选择在一些外部服务器上同步,在你的地方的服务器上安装一个,和/或购买一个专用设备作为你的网络的ntp服务器。这完全取决于您是希望时间在绝对意义上是正确的(这将需要咨询一些外部时间信号),还是仅在您的机器之间。

如果你想使用服务器时间,那么最简单的方法是从服务器获取它,要么通过做你现在正在做的事情,要么通过在你的应用程序中添加另一层,例如驻留在服务器上的web服务,并将本地机器时间发送到数据库。这种方法的好处是,如果你改变你的业务需求,允许其他时区的机器使用你的应用程序,那么当地时间不受影响。

除此之外,你必须确保机器是同步的,这并不总是无懈可击的,例如,如果你使用外部时间信号,它变得不可用。

最新更新