【问题标题】:How to format DateTime column in query for sqlite?如何在 SQLite 查询中格式化 DateTime 列?
【发布时间】:2014-03-08 23:05:14
【问题描述】:

我想要%Y-%m-%d %H:%M:%S 格式的日期时间表列

我正在使用

SELECT AIRPORT_NAME , strftime('%Y-%m-%d %H:%M:%S', 'CREATETS')as crts FROM AIRPORT_MASTER where AIRPORT_MASTER_ID = 1;

CREATETS 是我的日期时间列,其中包含“21-03-2011 12:00:00.000000”格式的数据

这作为查询但在我的情况下不能正常工作,sqlite 不显示任何错误但在这种情况下没有输出 帮我搞定

“2011-03-21 08:55:36”作为输出格式

【问题讨论】:

  • 您可以从 db 中以任何格式(简单地作为字符串)获取日期,然后在 android 中将其转换为不同的日期格式..
  • 但是我不能自己进入查询吗?..所以我可以保存我的代码行
  • @PankajKumar 我没有以字符串格式存储我的日期..它是 Sqlite 的 DateTime 格式
  • 如果您将其检索为 String ,您确定没问题吗?换句话说,您确定这只是您检索它的格式的问题吗?

标签: android sqlite datetime


【解决方案1】:

首先,'CREATETS' 是字符串文字,而不是列名。如果您需要引用某个列,请删除 '' 引号。

其次,21-03-2011 12:00:00.000000 不是 time string as understood by sqlite,尝试使用 datetime 函数对其进行转换将导致 null。

从技术上讲,可以使用 SUBSTR() 将您的日期时间值转换为 sqlite 可以理解的时间字符串,以提取部分值并重新排序字段。

但是,SQL 不是放置您的演示/格式化代码的正确位置。而是在您的 Java 代码中执行此操作。此外,如果您只是以“原始”格式存储时间戳,例如 unix 时间戳(自纪元以来的秒数)或 Java 毫秒时间戳,而不是格式化字符串,则会更容易。

【讨论】:

  • 当您存储原始时间戳时,您还需要将时区存储在另一列中。因此,一个常见的时区感知日期格式更容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多