【问题标题】:How to get only those that satisify date-only part of timestamp, not time如何仅获取满足时间戳的仅日期部分而不是时间的那些
【发布时间】:2019-07-02 21:02:24
【问题描述】:

问题是时间戳就像年-月-日时:分:秒,而我的 WHERE 条件只需要关心年-月-日部分。

我已尝试对 DATE() 进行调节。我已经尝试过 truncate() 并且也只是简单地尝试了 WHERE created_on = '2019-01-01' 并且没有显示任何结果。

我的表格列是:

id|event_status|created_on

created_on 是时间戳字段。

[57014] 错误:由于语句超时而取消语句

根本没有结果。

【问题讨论】:

  • 您的错误似乎与“迄今为止的时间戳”问题无关。也许您的电话是在一个非常庞大的数据集上?数据库是否有任何限制。该语句只是超时。

标签: postgresql


【解决方案1】:

您需要将时间戳转换为日期:

WHERE created_on::date = date '2019-01-01'` 

但是,这将无法使用created_on 上的索引,这可能是超时的原因。

另一种可以利用created_on 上的索引的写法是使用范围条件:

WHERE created_on >= date '2019-01-01' 
  and created_on < date '2019-01-02'

【讨论】:

    【解决方案2】:

    您可以将timestamp 转换为date。这会截断time 部分

    WHERE created_on::date = '2019-01-01'::date
    

    【讨论】:

      猜你喜欢
      • 2015-04-25
      • 2011-12-01
      • 1970-01-01
      • 2012-07-10
      • 2018-01-17
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      相关资源
      最近更新 更多