【问题标题】:Postgresql search for items older than a thresholdPostgresql 搜索超过阈值的项目
【发布时间】:2012-08-07 21:43:39
【问题描述】:

看起来这应该是一件简单的事情,但是 postgresql 中的日期/时间操作让我很生气。我要做的就是搜索超过 10 分钟的项目。编码语言是PHP。

字段event_time是:不带时区的时间戳NOT NULL

$sql = "SELECT * FROM incidents WHERE 
        event_time < ( now() - interval '-{$threshold} minutes' )
        AND submitted=0 "; 

此查询返回所有结果,而不是超过 10 分钟的项目。我需要以某种方式输入那个 event_time 字段吗?

【问题讨论】:

  • 你能告诉我们真正的陈述是什么吗?阈值之前的破折号是什么业务?在普通 SQL 中,它应该是 now() - interval '10' minutenow - interval '10 minutes'(注意:10 之前没有破折号)

标签: php sql postgresql


【解决方案1】:

通过使用负阈值,您会得到双重否定,因此您正在搜索未来不到十分钟的所有内容(这自然会返回所有内容)。只需使用interval '{$threshold} minutes}'

【讨论】:

  • 另一种选择是:event_time - now() &gt; interval '10' minute(我个人觉得更易读)
  • 是的,看起来就是这样。我是个白痴。谢谢你,先生! ;)
  • @MichaelGuthrie 如果这解决了你的问题,你应该接受这个答案,因为它会建立你的声誉,让人们在未来更愿意回答你的问题。
猜你喜欢
  • 2020-04-01
  • 1970-01-01
  • 2021-11-12
  • 2011-08-30
  • 2018-05-11
  • 2017-10-19
  • 1970-01-01
  • 2020-02-08
  • 1970-01-01
相关资源
最近更新 更多