关于sqlite数据库的C#query datetime失败

时间:2011-12-14 19:20:07

标签: c# sqlite system.data.sqlite

我正在读一个sqlite文件,其中datetime列数据保存为整数值(INTEGER NO NULL)

DateTime dt=reader.GetDateTime(nColDateTime);

但是它会发出一个错误,指出返回值的格式不正确。 我尝试在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

你能帮助我获得正确的约会时间吗?

1 个答案:

答案 0 :(得分:1)

您的日期以Unix纪元格式存储。

您可能只想使用:

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

...

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

例如,当我查看上面“1970/05/18”的示例时,我可以假设您的约会时间约为5个月,比今天提前18天。

以下是我将如何重新审视原始值:

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

返回:

13119840000000000

将其插入我的公式:

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

返回:

2011/07/30