2010-04-01 3 views
4

빠른 데이터 비교를 위해 엔터티에 int (일 단위)을 저장하는 데이터 구조가 있습니다. 엔터티에는 .NET CLR ID 이름과 표준 시간/일광 시간 약어를 포함하는 TimeZone 테이블에 대한 외부 키 참조가 있습니다.표준 시간대를 저장하고 비교하는 방법

이 정보는 표준 시간대로 구분되어 저장되므로 LINQ to SQL에서 이것을 UTC DateTime으로 변환하여 UTC가 될 다른 시간과 비교할 수 있는지 궁금합니다.

서버 쪽이 변환을 수행해야만 클라이언트가 아닌 SQL Server에서 필터링을 실행할 수 있습니다. 그 이유는이를 지원하는 표준 시간대에 대해 DST를 고려하기 때문입니다.

나는 2008 년

답변

2

상황 별 오프셋을 결정하기 위해 매 시간마다 업데이트되는 스크립트로 업데이트해야하는 CurrentOffset 필드를 저장할 수 있습니다.

1

이상적으로 .NET 3.5 SP1 및 SQL Server를 사용하고, 시간에 대한 UTC의 데이터베이스에 저장 만 (A DST 요인 적절한를 포함 할 것) 일부 지역의 시간대로 변환한다 디스플레이. "빠른 비교"가 목표 인 경우 특히입니다.

당신은 UTC 시간을 포함하는 추가 필드를 추가하려면이 정보를 추가 할 클라이언트를 수정하고, 한 시간이 기존 항목을 위해 그것을 계산하는 스크립트를 실행하는 것이 가장 쉬운 방법을 찾을 수 있습니다.

+0

DST 중에 시간을 설정 한 다음 비 DST 비교로 변경하면 시간이 한 시간 늦춰집니다. 따라서 시간 - 문맥상의 비교가 중요합니다. –

+1

UTC는 정의 상 DST 기간이 없습니다. 따라서 DST를 고려해야 할 시간은 현지 표준 시간대에서 UTC로 변환 한 후 되돌릴 때입니다. UTC 양식을 사용하면 DST가 비교 대상과 관련이 없습니다. UTC는 용도에 따라 GMT와 동일합니다. 영국은 GMT와 BST의 두 시간 오프셋을 사용합니다. BST는 GMT에 DST에 해당하는 지역을 적용 할 때 발생합니다. 그러나 당신은 여전히 ​​그들이 BST 서로 다른 시간임을 이해하고, 여름에는 GMT와 UTC를 참조 할 수 있습니다. – Chromatix

관련 문제