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
你能帮我得到正确的日期时间吗?
您的日期以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