이번 주말은 12 월 30 일 23:59:59
이후에 extra second이 삽입되어 추가로 긴 주일입니다.SQL Server 2008에서 윤년 저장
우리는 24 시간 내내 많은 양의 데이터를 기록하는 시스템을 가지고 있으며, 비즈니스 규칙 중 하나는 두 개의 레코드가 동시에 발생하지 않았으며 1 초 이내에 기록되지 않는다는 것입니다.
우리는 새로운 datetimeoffset
데이터 형식과 함께 UTC datetimes를 사용하고 있습니다.하지만 내가 알 수있는 한, 1 분 안에 60 초 이상을 버틸 수는 없습니다.
물론,이 오류가 발생합니다 :
이select datediff(ss, getdate(), '30-jun-2012 23:59:60')
그러나 UTC 신들에 따라이 실제 시간이 될 것입니다. 이벤트는 23:59:60
에서 발생할 수 있지만이 사실을 기록 할 방법이 없습니다.
23:59:59
더하기 1 초 오프셋은 여전히 7 월 1 일에 00:00:00
으로 간주됩니다.
데이터베이스의 23:59:60
에 이벤트가 발생했는지 정확하게 기록하려면 어떻게해야합니까?
비즈니스 규칙이 현실을 무시한 것처럼 보입니다. –
어떻게 그렇게? 기록되는 이벤트는 물리적으로 1 초에 두 번 이상 발생할 수 없습니다. 나는 당신이 같은 프로젝트에서 일하고 있다는 것을 몰랐다. – Widor
나는 농담으로 말하고 있었지만 현실은 시스템이 윤초에 대한 타임 스탬프를 저장할 수 없기 때문에 두 번째 도약 중에 초당 하나의 이벤트를 기록 할 수 없다는 것이다. 비즈니스 규칙은 전통적인 방법으로 쉽게 만날 수없는 것을 요구하고 있습니다. 규칙을 다시 생각해 보거나 윤초를 예외로 만들거나 미친 일회용 코드를 작성하십시오. –