0

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

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

Select dateTime('now'); //for SQLite
Select Now(*); //for Sybase

编辑: Sybase 确实已经正确地为您提供了服务器时间,所以我只是在寻找 SQLite 解决方案

4

2 回答 2

1

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

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

于 2013-03-06T23:07:23.320 回答
1

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

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

于 2013-03-06T23:17:13.367 回答