2011-03-04 6 views
5

DateTime 값을 long으로 저장하여 생활을 더 편리하게 만들 수 있습니까? null DateTime 값을 사용하여 작업 할 때 항상 저장 또는 검색 여부에 관계없이 문제가있는 것처럼 보입니다. null DateTimes, 잘못된 DateTimes 등은 항상 문제가됩니다.DateTimes를 데이터베이스에 Long (Ticks)으로 저장해야합니까?

long 데이터 형식으로 작업하는 것이 좋습니다. 틱에서 항상 DateTime을 만들 수 있기 때문에?

편집 : 나는 SqlServer 및 MySql을 사용합니다. SqlDateTime은 .net 파생어가 DateTime입니다. 3 가지 플랫폼 모두에서 유효한 DateTime이 무엇인지에 대해서는 차이점이 있습니다. 이러한 차이점을 어떻게 처리합니까?

+2

datetime 이유가 있습니다 : 그것을 사용하십시오. –

+0

편의상 IMO가 있습니다. 나는 단순히 DateTime 값을 데이터베이스의 틱으로 저장하는 것을 고려 중이다. 데이터베이스에서 long을 검색하면 틱 수에서 DateTime을 만드는 데 필요한 정보를 얻을 수 있습니다. 나는 그것에 문제가 보이지 않는다. – IAbstract

+2

'long '을 사용하여'datetime'의 혐의 문제를 해결하려면 어떻게해야합니까? –

답변

7

개인 선호도에 미치지 못합니다. 필자는 항상 datetime 형식을 사용하며 그와 관련된 문제가 없습니다.

의미가 있지만 long으로 저장하면 더 이상 날짜가 아닙니다. 금요일에 추가 된 모든 계정을 선택하라는 쿼리를 원한다면,이를 해결하기 위해 여러 농구를 뛰어 넘어야합니다.

+5

죽음과 파괴의 불타는 농구. – Max

4

저는 개인적으로 어떤 특별한 이유도 생각할 수 없습니다. 데이터베이스는 DateTime 자체를 지원하며, 발로 자신을 총으로 쏘아 버릴 수있는 한 오래 보관할 수 있습니다. "오전 3시에서 6시 사이에 모든 행 가져 오기"쿼리를 실행할 수 있어야한다고 가정 해 봅시다. 틱으로 저장하면 데이터베이스의 DateTime으로 다시 변환해야합니다. 등 그룹화, 정렬, 필터링, 다른 많은 작업을 방해 할 수 진드기로

을 저장

당신은 시간대로 데이터베이스에 날짜 시간과 뉘앙스가있는 경우, 강하게 날짜 시간에 정상화를 권장합니다 특정 시간대 (예 : UTC) 데이터베이스에서 DateTime과 관련된 많은 문제는 TimeZone을 정규화하지 않는 것과 같은 비위적적 인 입력으로 인한 경우가 많습니다. 진드기로 저장하면 여전히 동일한 문제가 발생합니다.

+0

쿼리의 우수 지점 : +1 – IAbstract

2

아니요, datetime 열을 사용하십시오.

가 항상 null 날짜 시간 작업을 할 때 문제가 될 것 같다 당신의 열이 널 (NULL) 인 경우

값, 그리고 컬럼의 유형이 또한 문제가있는 것 datetime 때 어떤 이유로 어려움이 열의 유형이 long 인 경우

... 유효하지 않은 날짜 시간

당신이 datetime 컬럼에 유효하지 않은 날짜 시간을 어떻게합니까

? datetime 열을 사용하는 목적 중 하나는 데이터를 삽입하기 전에 유효성 검사가 수행된다는 것입니다. 알몸의 long을 사용할 때 유효하지 않은 datetimes가 발생할 가능성이 훨씬 더 높습니다.

마지막으로 long을 사용하면 간단한 SQL (select * from table)을 통해 데이터베이스를 볼 때 읽기 어려운 결과가 발생합니다.

+0

SqlServer, MySql 및 .Net이 유효하지 않은 DateTime 값으로 간주되는 것의 차이점이있는 것으로 보입니다 ... – IAbstract

+0

@IAbstract, 실제로 - 질문에 구체적으로 도움이됩니다 . 특정 데이터베이스에 대해 묻고 있습니까? –

+0

당시 SQL Server 및 MySQL에서 데이터를 가져 오는 중이 질문이있었습니다. 모든 세부 사항을 기억하지는 않지만 DateTime은 모든 3 플랫폼 (.Net 포함)에서 작동합니다. 따라서 DateTime을 long으로 저장하면 "보편적"입니다. 나는 (중개자로서) .Net 측면에서 쉽게 내 인생을 만들었을 데이터베이스 중 하나만 수정할 수있는 권한과 접근 권한이 있다고 생각한다. 그렇지 않으면 필자는 필요한 경우 */DateTime * 열에서 긴 값의 가독성에 대해 염려하지 않았습니다. 필요할 경우 해당 날짜에/proc을 사용하여 해당 플랫폼에 따라 날짜를 표시 할 수있었습니다. – IAbstract

2

경우에 따라 예. Sql은 Datetime보다 낮은 정밀도로 날짜를 저장합니다.즉, 지속되고 검색된 값은 원래 개체와 약간 다른 DateTime 값을 가질 수 있으므로 순서 또는 비교에 문제가 발생할 수 있습니다.

관련 문제