由於在6月30日的23:59:59
之後將會插入一個extra second,因此本週末時間較長。在SQL Server 2008中存儲閏秒
我們有一個系統可以全天候記錄大量數據,而其中一項業務規則是,在同一時間內沒有兩個記錄可以記錄爲在一秒內發生。
我們使用UTC日期時間和新的datetimeoffset
數據類型,但據我所知他們不會讓您在一分鐘內超過60秒。
當然,這將引發一個錯誤:
select datediff(ss, getdate(), '30-jun-2012 23:59:60')
但根據UTC神,這將是一個真正的時間。事件發生在23:59:60
,但我們沒有辦法記錄這個事實。
23:59:59
加上一秒鐘抵消仍將被視爲00:00:00
7月1日。
如何正確記錄數據庫中發生的事件23:59:60
?
看來你的業務規則忽略了現實。 –
如何?記錄的事件每秒不會超過一次。我不知道你也在同一個項目上工作。 – Widor
我在開玩笑說,但現實是系統無法爲閏秒存儲時間戳,因此在閏秒期間不可能每秒記錄一個事件。業務規則要求通過傳統手段難以滿足的事情。重新思考規則,爲閏秒制定例外規定,或編寫瘋狂的一次性代碼。 –