【问题标题】:Select records newer than a specified date选择比指定日期新的记录
【发布时间】:2014-08-18 14:11:32
【问题描述】:

我正在 Android 上使用 Sqlite。在一个表中,我得到一列字符串值,它以 UTC 格式存储时间戳,格式类似于“yyyy-MM-dd HH:mm:ss”。现在我想将该值与另一个格式相同的时间戳进行比较。假设您想要所有比“2013-01-01 00:00:00”更新的记录器。但是如何在 SELECT 语句中使用它呢?

示例:

  • 表:人类
  • 列:(文本)名称
  • 列:(TEXT)bornOnUtc

现在选择所有在 2013-01-01 00:00:00 之后出生的人类?

【问题讨论】:

  • 在 rawQuery 中添加 `WHERE BornOnUTC > '2013-01-01 00:00:00'` 怎么样?
  • 但这只是一个字符串比较,而不是现在真正基于 DateTime。
  • 而 它与您接受的答案有何不同?你能定义 DateTime,正如 SQLite 解释的那样吗?它实际上是 SQLite 中的字符串或整数(取决于您如何定义字段)...
  • 因为我不知道您实际上可以根据字符串比较日期时间戳。后来我找到了this post,解释了为什么字符串比较有效。所以你的答案也是正确的,但我不能接受评论作为正确答案。
  • 人们应该从这个网站上的帖子中学习。尽管我的问题可能很简单,但我仍然不明白为什么人们会否决它。这不是一个愚蠢或愚蠢的,只是一个简单的。

标签: android sql datetime sqlite


【解决方案1】:

试试这个:

SELECT *
FROM human
WHERE bornOnUtc >= '2013-01-01 00:00:00'

【讨论】:

  • 谢谢。实际上,这只是字符串比较,但this post 很好地解释了为什么这样做。
  • 这也有效:SELECT * FROM human WHERE DATE(bornOnUtc) > DATE('2013-01-01 00:00:00');
  • @Matthias:您的方法有效,但引入了 开销(即:最差性能),因为 2 次转换
  • 你是对的。字符串比较是这里更好的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多