2011-12-14 96 views
1

我讀其中datetime列數據保存爲整數值(INTEGER NO NULL)C#查詢日期時間關閉SQLite數據庫失敗

DateTime dt=reader.GetDateTime(nColDateTime); 

一個sqlite的文件,但它發出一個錯誤說,返回值不格式正確。 我嘗試在DateTime類的所有其他可用的方法,並發現只有

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

作品(如其他返回例外)。 但格式化日期(如dt.ToShortDateTime())不正確(即0042/11/20)我不知道這是什麼。 我再試試這個

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

它給了我1970/05/18

你能幫我得到正確的日期時間?

+0

嗯,你大概沿着GetInt64的右邊線,但你需要知道什麼是整數*意味着*。你是否有一些樣本值以及它們代表的日期/時間? – 2011-12-14 19:22:50

+0

謝謝,爲了您的利益,123958450000000000000,只是一個例子。 – 2011-12-14 19:27:31

回答

1

您的日期以Unix時代格式存儲。

你可能只是想利用:

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

... 

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

例如,當我在看你上面的例子「1970年5月18日」,我可以假設你的日期是大約5個月,比今天早18天。

這是我怎麼會retreieve原值:

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

將返回:

13119840000000000 

堵到這一點我的公式:

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

這將返回:

2011/07/30