【问题标题】:Sqlite get only date from MM/dd/yyyy HH:mm:ss format [duplicate]Sqlite 仅从 MM/dd/yyyy HH:mm:ss 格式获取日期 [重复]
【发布时间】:2014-09-30 19:46:19
【问题描述】:

我已将我的日期和时间以下列格式和文本形式存储在数据库中。

MM/dd/yyyy HH:mm:ss

我正在尝试通过这样做仅从昨天选择 所有 记录:

SELECT * from source_tbl where date_time = (select max(date_time) 
   from source_tbl 
   WHERE date_time < DATE('now', '-1 day') )

我知道如果我只将 MM/dd/yyyy 存储在数据库中,那么我上面的查询就可以正常工作,但在我的情况下,我有 HH:mm:ss 所以它不会工作。

但是有什么方法可以只获取 MM/dd/yyyy 部分然后应用我上面的查询,或者有什么方法可以做到这一点?

【问题讨论】:

  • MM/dd/yyyy 单独也不起作用。如重复问题所示,比较仅适用于受支持的日期格式。另见thisthat
  • @CL。最后两个问题。 1. 如果我将格式更改为yyyy-MM-dd HH:mm:ss,那么仍然没有机会选择昨天的所有记录? 2. 或者如果我将 date_time 列的数据类型更改为 Date,那么是否可以获取日期部分并应用我上面的查询?
  • 1.当然有。 2. SQLitehas no data types.
  • 为了帮助其他人,我尝试了这个:SELECT * FROM source_tbl WHERE strftime('%Y-%m-%d', date_time) = date('now','-1 day'),它对我有用。我也将格式更改为yyyy-MM-dd HH:mm:ss

标签: android sqlite datetime


【解决方案1】:

您需要将数据和价值都转换为无时间形式进行比较。这些方面的东西可能会起作用:

SELECT * FROM source_tbl
WHERE date(date_time) = date('now', '-1 day');

这将选择昨天的所有记录。您的原始查询让我感到困惑,您是否只需要昨天的一条记录还是全部记录,但如果需要,您应该能够向该查询添加条件。

【讨论】:

  • date 函数不处理这种格式。
猜你喜欢
  • 2015-11-03
  • 1970-01-01
  • 2017-07-09
  • 2017-09-06
  • 2020-03-07
  • 2016-11-06
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
相关资源
最近更新 更多