【问题标题】:in C# and sqlite datetime values are wrongly inserted or wrongly queried在 C# 和 sqlite 日期时间值被错误插入或错误查询
【发布时间】:2012-02-28 02:25:17
【问题描述】:

我在 C# 中将日期时间值插入到 sqlite 数据库时遇到问题。后来我找到了一种方法。现在我可以通过像这样格式化它们来插入 DateTime 值

data.Add("sayacTarihZamani", string.Format("{0:u}", MydateTimeData)); 

我可以看到使用 sqlite 管理工具将数据正确插入到数据库表中。 当我查询这些数据时,出现的值是错误的。这些值比正常值晚 3 小时。

例如,在管理工具中我看到 30.03.2011 16:00:00 值,但在 C# 网格中,该值是 30.03.2011 19:00:00 ..

这有一个例外。我使用管理工具手动输入了一行。它的日期值为 30.03.2011 11:30:00 在数据网格中仍然是 30.03.2011 11:30:00 (true)

如何使用 sqlite 和 C# 正确插入和查询日期时间数据。

感谢您的宝贵时间,
费达

【问题讨论】:

  • 时区标准化了吗?

标签: c# sqlite datetime insert


【解决方案1】:

当您使用 u 说明符时,您的 DateTime 会自动转换为通用时间。 From the docs(强调我的):

“U”标准格式说明符表示自定义日期和时间 由指定区域性定义的格式字符串 DateTimeFormatInfo.FullDateTimePattern 属性。模式是 与“F”模式相同。但是,DateTime 值会自动 在格式化之前转换为 UTC

如果您想存储当地时间,请尝试使用F 模式。

【讨论】:

  • 嗨,当我使用 F 模式时,它会错误地插入日期值。像这样 30.12.1899 00:20:11 而不是 30.03.2011 16:00:00 。它也为不同的小时提供相同的值,例如 30.03.2011 15:00:00 该值也是 30.12.1899 00:20:11(相同和错误)
【解决方案2】:

data.Add("sayacTarihZamani", string.Format("{0:yyyy-MM-dd HH:mm:ss}", mydatetime));

一切正常。

感谢您的帮助 费达

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多