Postgresql 忽略时间戳postgres中的秒数

Postgresql 忽略时间戳postgres中的秒数,postgresql,Postgresql,我每1分钟运行一次cron作业,用于通知用户事件 select * from events where event_start = now() - interval '30 minutes' 因此,我可以在事件发生30分钟之前向用户发送通知 问题是事件开始是一个时间戳字段,因此如果秒数存在差异,它将不起作用,因此如何可以忽略秒数部分。您可以使用date\u trunc()删除秒数: select * from events where event_start = date_trunc('

我每1分钟运行一次cron作业,用于通知用户事件

select * from events where event_start = now()  - interval '30 minutes'
因此,我可以在事件发生30分钟之前向用户发送通知


问题是事件开始是一个时间戳字段,因此如果秒数存在差异,它将不起作用,因此如何可以忽略秒数部分。

您可以使用
date\u trunc()
删除秒数:

select * 
from events 
where event_start = date_trunc('second', now())  - interval '30' minutes

手册中的更多详细信息:

要忽略秒数,可以使用函数

函数date_trunc在概念上类似于trunc函数 对于数字

日期(字段,源[,时区])源是一个值表达式 时间戳、带时区的时间戳或时间间隔类型。(价值观) 类型日期和时间自动转换为时间戳或间隔, 字段选择截断输入的精度 价值返回值的类型类似于timestamp,timestamp with 时区或时间间隔,并且它具有所有较小的字段 显著性高于设置为零的所选值(或一,对于日和 月)

字段的有效值为:

  • 微秒
  • 毫秒
  • 第二
  • 分钟
  • 时辰
  • 一天
  • 四分之一
  • 十年
  • 世纪
  • 千禧年
因此,在您的情况下,您应该使用:

SELECT * 
FROM events
WHERE event_start = date_trunc('minute', now()) - INTERVAL '30' MINUTE;
选中此项:
SELECT * 
FROM events
WHERE event_start = date_trunc('minute', now()) - INTERVAL '30' MINUTE;