2011-12-14 5 views
1

내가 날짜 열 데이터가 정수 값 (INTEGER NO NULL)C# 쿼리 날짜 떨어져 SQLite는 데이터베이스는

DateTime dt=reader.GetDateTime(nColDateTime); 

로 저장되어있는 sqlite가 파일을 읽고있다 실패하지만 반환 값이 아니라고 말하는 오류를 방출 올바른 형식으로. (다른 사람이 예외를 반환으로) 나는 날짜 시간 클래스의 다른 모든 가능한 방법을 시도 만

DateTime dt=DateTime.FromBinary(reader.GetInt64(nColDateTime)); 

작품을 찾을 수 있습니다. 그러나 형식이 지정된 날짜 (dt.ToShortDateTime())가 잘못되었습니다 (즉, 0042/11/20). 이것이 무엇인지 전혀 알지 못합니다. 그때

당신이 날은 정확한 날짜를 얻을 도움이 될 수 그것은 나를 1970/05/18 제공이

long d=DateTime.Now.Ticks-reader.GetInt64(nColDateTime); 
DateTime dt=new DateTime(d); 

을 시도 ?

+0

아마도 GetInt64를 사용하여 올바른 줄을 따라 가야하지만 정수 *가 무엇인지 알 필요가 있습니다. 몇 가지 샘플 값과 함께 표시 할 날짜/시간이 있습니까? –

+0

감사합니다. 관심 있으신 분은 123958450000000000000입니다. –

+1

@ 존, 그는 1970 년 근처에서'DateTime.Now.Ticks'에서 숫자를 뺀 것이 날짜를 제공한다는 것을 보여주기 때문에 유닉스 시대를 사용한다고 가정 할 수 있습니다. –

답변

1

날짜는 유닉스 시대의 형식으로 저장됩니다.

당신은 아마 사용하려면 : 나는 "1970년 5월 18일"위의 예를 볼 때

private static readonly DateTime epoch = new DateTime(1970, 1, 1); 

... 

var myDate = epoch + TimeSpan.FromTicks(reader.GetInt64(nColDateTime)); 

는 예를 들어, 당신의 날짜가 약 5 개월 있다고 가정 할 수 있습니다, 오늘보다 18 일 빠릅니다.

(DateTime.Today - new DateTime(1970, 5, 18)).Ticks 

반환 :

new DateTime(1970, 1, 1) + TimeSpan.FromTicks(13119840000000000) 

이 반환 :

13119840000000000 

내 식으로 그것을 연결해 여기

내가 원래 값을 retreieve 얼마나입니다

2011/07/30 
+0

Smarty John Gietzen, 다른 시스템에서 datetime 설명에 대한 정보를 어디에서 찾을 수 있습니까? –

+0

@Sesama : 나는 정말로 모른다. Stack Overfow에 대해 질문 할 수 있습니다. –

+0

Sux ................. –