Cuối tuần này là một giây dài nữa sẽ có một extra second được chèn sau 23:59:59
vào ngày 30 tháng 6.Lưu trữ giây nhảy vọt trong SQL Server 2008
Chúng tôi có một hệ thống ghi nhiều dữ liệu trên đồng hồ và một trong các quy tắc kinh doanh là không có hai bản ghi nào có thể được ghi lại như đã xảy ra cùng một lúc, trong vòng một giây.
Chúng tôi đang sử dụng dữ liệu UTC cùng với loại dữ liệu datetimeoffset
mới, nhưng theo như tôi có thể nói, chúng sẽ không cho phép bạn có hơn 60 giây trong một phút.
Chắc chắn, điều này ném một lỗi:
select datediff(ss, getdate(), '30-jun-2012 23:59:60')
Tuy nhiên, theo các vị thần UTC đây sẽ là một thời gian thực. Sự kiện có thể diễn ra tại 23:59:60
nhưng chúng tôi không có cách nào để ghi lại sự kiện này.
23:59:59
cộng với chênh lệch một giây sẽ vẫn được coi là 00:00:00
vào ngày 1 tháng 7.
Tôi làm cách nào để đăng nhập chính xác sự kiện xảy ra tại 23:59:60
trong cơ sở dữ liệu?
Dường như quy tắc kinh doanh của bạn bỏ qua thực tế. –
Làm thế nào? Các sự kiện được ghi lại không thể xuất hiện nhiều hơn một lần trong một giây. Tôi không biết bạn cũng đang làm việc trên cùng một dự án. – Widor
Tôi đã nói chuyện vui vẻ, nhưng thực tế là hệ thống không thể lưu trữ một dấu thời gian cho bước nhảy vọt thứ hai, do đó không thể đăng nhập một sự kiện mỗi giây trong một giây nhảy vọt. Quy tắc kinh doanh đòi hỏi cái gì đó không thể dễ dàng được đáp ứng thông qua các phương tiện truyền thống. Suy nghĩ lại các quy tắc, tạo ngoại lệ cho những giây nhảy vọt hoặc viết mã một lần điên rồ. –