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

问题描述:

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

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

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

编辑:Sybase并未已经给你服务器的时间正确的,所以我只想找SQLite的解决方案

+0

你说可执行文件在服务器上,那么客户机也不是服务器吗?或者你的意思是说可执行文件恰好驻留在服务器上,但它是从单独的(客户端)机器运行的? – DeanOC 2013-03-06 22:53:30

+0

在问题情况中,可执行文件位于映射驱动器上的服务器上,并且客户端运行指向该可执行文件的快捷方式。所以是的,它只是驻留在服务器上,并从另一台机器运行。 – Tbone 2013-03-06 22:56:07

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

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

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

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