문제

SQL Server 2005 데이터베이스에 AAC# DateTimeOffset 값을 저장하고 싶습니다.

SQL 2008은 이것을 내장형 유형으로 가지고 있지만 SQL Server 2005는 그렇지 않습니다.

DateTimeOffset 구조는 DateTime 값을 갖는다. 이것은 UTC에 비해 시간대이기 때문에 아마도 미국의 시간 또는 30 분 정도 일 것입니다.

SQL Server 2005 데이터베이스에 이것을 가장 잘 저장하는 방법에 대한 제안?

도움이 되었습니까?

해결책

오프셋이 몇 시간 또는 30 분이라고 가정하는 것은 좋은 생각이 아닙니다. 주변에 분기 시간 시간이 확실히 있습니다.

오프셋에 밀리 초를 사용하는 것이 아마도 가장 유연하지만, 분은 읽기가 훨씬 쉽다고 주장합니다. 데이터베이스의 "원시"데이터를 보려고한다면 3600000보다 값 60 = 1 시간을 이해하는 것이 더 쉽습니다. 오프셋으로 분의 분수가 필요하다고 상상할 수 없습니다.

다른 팁

모든 dateTimeOffsets를 공통 오프셋, 바람직하게는 UTC로 정규화합니다. 그런 다음 평소처럼 DateTime을 저장하십시오. 추출시 오프셋을 복원하면 일정해야합니다. 이것은 원래 오프셋을 유지하지 않지만 오프셋은 어쨌든 시간대에 모호합니다.

실제로 날짜/시간 원점을 알아야한다면 시간대 정보를 저장해야합니다. 간단한 오프셋이 시간의 기원을 명확하게 나타내지 않기 때문입니다. (다소 혼란스러운) MSDN 문서를 참조하십시오. DateTime, DateTimeOffset 및 TimeZoneInfo 중에서 선택합니다.

DateTime을 DateTime으로, 오프셋을 밀리 초 (bigint)로 저장하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top