PostgreSQL query for current minute
我的Web应用程序需要获取所有具有此分钟时间值的项目的结果。我的表有一个时间属性
1 | id, message, TIME, ..., |
其中time是带有时区的timestamp类型。
我需要获取所有条目的列表,其中时间是当前分钟。比较整个值不匹配,因为时间戳具有微秒的分辨率。
当前,我正在使用以下查询返回此列表,它可以正常工作,但我认为应该有一种更有效的方法。
1 2 3 4 5 6 | SELECT * FROM notification WHERE date_part('year', TIME) = date_part('year', CURRENT_DATE) AND date_part('month', TIME) = date_part('month', CURRENT_DATE) AND date_part('day', TIME) = date_part('day', CURRENT_DATE) AND date_part('hour', TIME) = date_part('hour', CURRENT_TIME) AND date_part('minute', TIME) = date_part('minute', CURRENT_TIME); |
我还想知道如何获得当前分钟以及前一分钟或最后n分钟的结果。
数据库是PostgreSQL 8.4.3
谢谢
我会尝试这样的事情:
1 2 3 | WHERE TIME >= date_trunc('minute', now()) AND TIME < date_trunc('minute', now()) + INTERVAL '1 minute'; |
这将定义边界并搜索该范围内的时间,这意味着它仍然可以使用在
简单地比较截断的时间戳怎么办?
1 2 3 | SELECT * FROM notification n WHERE date_trunc('minute', n.time) = date_trunc('minute', CURRENT_TIMESTAMP); |
我怀疑优化器是否足够聪明,可以使用这种方法在