2011-12-14 75 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