【问题标题】:DateTime in SQLite has AM/PMSQLite 中的 DateTime 有 AM/PM
【发布时间】:2017-05-31 13:09:19
【问题描述】:

我有一个由外部程序填充日志数据的数据库。

一列是 DateTime 类型的时间戳。

根据外部程序主机的时间格式设置,它可以使用 24h 或 12h 格式和 AM/PM 写入数据库。

我用来获取时间的这个查询(在同一台机器上,但是来自不同外部设备的两个数据库文件):

SELECT Time FROM tabData

输出(来自具有 AM/PM 时间设置的机器)

2017-05-31 8:52:26 AM

和另一个(来自具有 24 小时时间设置的机器)

2017-05-31 08:52:26

为什么数据库日期时间在上午/下午保持 12 小时模式?我可以通过 SQL 以某种方式更改数据库日期时间的格式吗?

我还想将这些数据读入 C# 中的 DataTable,我更喜欢 SQL 语句将任何给定的日期时间读取为 24 小时日期时间。

【问题讨论】:

  • 您是否尝试过以 ISO 格式 (YYYY-MM-DD HH:MM:SS) 存储日期时间戳?你想像这个问题一样转换成24小时格式吗:stackoverflow.com/questions/20655003/…
  • @TetsuyaYamamoto 我无法控制外部程序如何将数据写入数据库。
  • 那么,您的意思是转换作业应该由 SQLite 查询本身处理吗?如果这是您想要的,首先我建议您避免通过查询进行日期时间转换,因为 SQL 是分层架构,显示格式处理程序应该在表示层中完成。
  • SQLite 没有DateTime 类型。我可以假设您的数据库数据作为 TEXT 类型存储在字符串中。使用适当的functions 处理日期和时间。
  • @AlexanderPetrov 根据表模式,它是datetime。可能实际上只是一个字符串?

标签: c# sqlite datetime


【解决方案1】:

如果 SQLite 类似于 MSSQL 和 Oracle,它没有日期时间的格式,除了它的内部存储格式,你不需要知道任何事情。您看到的格式仅在您使用 客户端 查询该日期时显示,然后实际格式取决于您使用的客户端,例如在客户端计算机上选择的常规时间设置。

【讨论】:

  • 数据库是由一台设置为 12 小时的机器写入的,我在另一台设置为 24 小时的机器上读取数据库,但它显示为上午/下午的 12 小时...
猜你喜欢
  • 1970-01-01
  • 2011-12-29
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多