2013-03-06 209 views
0

我很可能缺少一些簡單的解決方案,但我有一個可執行文件(用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

回答

1

唯一真正的解決辦法是通過使用ntp或sntp來保持所有機器的時間同步。比任何其他解決方案都更容易和更準確,所有現代操作系統都具有與時間服務器同步的標準配置。

您可以選擇在某個外部服務器上同步,在服務器上安裝一個服務器,或者購買專用設備作爲網絡的ntp服務器。這完全取決於您是否希望時間在絕對條件下是正確的(這將需要諮詢一些外部時間信號),或者僅限於您的機器。

1

如果你想使用服務器時間,那麼最簡單的方法是從服務器獲取它,或者通過做你現在正在做的事情,或者向你的應用程序添加另一層,一個Web服務駐留在服務器上,並將本地計算機時間發送到數據庫。這種方法的好處是,如果您更改業務要求以允許其他時區的計算機使用您的應用程序,則本地時間不受影響。

除此之外,你必須確保機器是同步的,並不總是防彈的,例如,如果您使用外部時間信號並且它變得不可用。

相關問題