c#查询datetime off sqlite数据库失败

本文关键字:数据库 失败 sqlite off 查询 datetime | 更新日期: 2023-09-27 18:17:47

我正在读取一个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

你能帮我得到正确的日期时间吗?

c#查询datetime off sqlite数据库失败

您的日期以Unix epoch格式存储。

您可能只想使用:

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