2016-09-29 3 views
1

SQL Server 데이터베이스에 datetimes를 저장하는 응용 프로그램에서 작업합니다. 이 중 일부는 로그 항목 날짜 시간과 같은 UTC로 저장되는 특정 시간이지만 다른 것은 문자/시간 (예 : "7 월 20 일 오후 4시, 시간대와 관계없이 약을 복용하십시오.")과 같습니다.UTC와 로컬 날짜 시간을 사용하는 열 구별

문제는 이들 둘 모두에 날짜와 시간 요소가 있기 때문에 datetime2 열 유형을 사용하면 두 가지 모두에 적합하다는 것입니다. 이제는 앱에서 날짜/시간 열이 UTC 시점인지 여부가 불분명 한 경우가 있습니다 또는 리터럴 날짜/시간이 2가지 경우를 구별하는 가장 일반적인 방법은 무엇

나는 이러한 옵션을 생각할 수 있습니다.?

1)에서 ... UTC 모든 UTC 열을 종료, 문자 일 동안/시간 열에 특별한 끝이 없습니다.

2) 모든 리터럴 열을 ... 리터럴로 끝내십시오. 반면 UTC 날짜/시간 열은 특별한 끝이 없습니다.

3) 데이터 형식 datetime2 및 리터럴 날짜/시간 열 datetimeoffset을 UTC 열에 지정합니다.

+0

테이블을 변경하고 새 열을 추가 할 수 있습니까? 예. UTC 시간인지 여부를 보여주는 플래그 열 'isUTC'... – Nebi

+0

# 1 번을 자주 보았습니다 (그리고 직접 사용). 나는 야생에서 # 2를 보지 못했다. 나는 3 번을 추천하지 않을 것이다. – jleach

답변

0

항상 적절한 유형을 먼저 사용하고 올바른 이름을 지정하십시오. datetime2(0)이 잘 맞으면 사용하십시오.

제 시스템에서 열 이름에 접미어를 추가합니다 (예 : PlaybackStartedLocal datetime2(0), PlaybackStartedUTC datetime2(0)). 필자의 경우 같은 이벤트에 대해 로컬 및 UTC 값을 모두 저장해야합니다. 일부 보고서에는 로컬 값이 필요하고 일부 UTC가 필요하기 때문에 나중에 이들을 변환하는 것은 매우 어렵습니다.

일반적으로 측정 단위를 열/변수 이름에 포함시키는 것이 좋습니다.

PlaybackDurationMSec   or PlaybackDuration 
LengthMeters/LengthMiles  or Length 

잘 알려진 예를 프로그래머의 두 팀들이 제국과 그 반대로로 메트릭 값을 해석되었다는 통지를하지 않은 경우 : A disaster investigation board reports that NASA’s Mars Climate Orbiter burned up in the Martian atmosphere because engineers failed to convert units from English to metric.

당신을 무엇

볼 것을 선호

소프트웨어는 스러 스터가 파운드의 힘을 발휘하는 데 필요한 힘을 계산했습니다. 별도의 소프트웨어가 메트릭 단위가 뉴턴이라고 가정하고 데이터 을 가져 왔습니다.

관련 문제