2016-09-08 3 views
0

웹 응용 프로그램의 SQL Server에 DateTime 값을 string으로 저장해야한다고 가정 해 봅니다. 이 웹 응용 프로그램은 LB 뒤에있는 여러 서버에 배포되고 동일한 DB 서버를 공유합니다.SQL Server에 문자열로 DateTime을 저장하는 모범 사례

이 프로젝트는 레거시 프로젝트이며 DateTime 인스턴스에서 간단히 ToString()이라고 불리는 사람들이 개발했기 때문에 시스템의 culture 설정에 따라 datetime의 형식이 지정됩니다. 날짜 시간을 검색 할 때 간단한 DateTime.Parse()은 암시 적으로 동일한 문화권 설정으로 올바르게 구문 분석합니다. 나는이 데이터와 기계의 문화 설정 사이의 의존성이 생성으로이 좋은 방법이라고 생각하지 않습니다 그러나 여러의 devs 다른 시간대 설정들이 DateTime 삽입됩니다 경우

, 그것은 의미 다른 형식으로 표시되며이 값이 나중에 구문 분석되어 DateTime으로 다시 돌아올 때 오류가 발생합니다.

나는 더 나은 방법은 데이터가 서로 다른 컴퓨터에서 작동 할 수 있도록 DateTime의 형식 (예를 들어, 일/월/년)의 통합 표준을 정의하는 것입니다 생각합니다. 그러나이 접근법에 어떤 단점이나 예기치 않은 문제가 있는지 알고 싶으시고 귀하의 통찰력을 높이 평가할 것입니다.

+0

DateTime을 'DateTimeOffset'으로 저장 한 다음 테이블에 계산 된 열을 만들어 적절한 문자열 표현을 자동으로 반환합니다. 'DateTimeOffset'을 사용하면 개발자가 다른 영역에있을 경우 TimeZone 정보가 보존됩니다. –

답변

3

문자열로 날짜/시간을 저장하는 데 가장 적합한 형식은 ISO 8601 표준 형식 인 YYYY-MM-DD 또는 YYYYMMDD (필자는 인간이기 때문에 하이픈이있는 버전을 선호합니다.)입니다.

이 형식은 거의 완전하며 모호하지 않습니다 (YYYYDDMM은 거의 형식으로 알 수 없음). 또한 올바르게 정렬되어 between 유형 비교에 사용될 수 있습니다.

+0

고든 감사합니다. :) –

+3

"왜냐하면 나는 인간이다"... 반대의 모든 증거. –

+0

@JohnCappelletti. . . LOL,하지만 당신은 나를 몰라요. –