sql - 当前分钟的 PostgreSQL 查询

标签 sql postgresql jdbc

我的 Web 应用程序需要获取具有这一分钟时间值的所有项目的结果。我的表有时间属性

id, message, time, ...,

其中时间是带时区的时间戳类型。 我需要获取时间为当前分钟的所有条目的列表。比较整个值不匹配,因为时间戳具有微秒分辨率。

目前我正在使用以下查询来返回此列表并且它有效,但我认为应该有一种更有效的方法来执行此操作。

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

谢谢

最佳答案

我会尝试这样的事情:

WHERE
    time >= date_trunc('minute', now()) AND
    time < date_trunc('minute', now()) + INTERVAL '1 minute';

这将定义边界并搜索该范围内的时间,这意味着它仍然可以使用您在 time 列上拥有(或应该拥有)的索引。

关于sql - 当前分钟的 PostgreSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3416923/

相关文章:

ruby-on-rails - 通过 URL 将 Docker 容器中的 Rails 应用程序连接到外部 Postgresql 数据库

java - 路径独立的 Derby 网络数据库服务

sql - Postgresql regexp_replace 'g' 标志

php - PostGreSQL 和 PHP 的登录脚本不起作用

MySQL - 如何将列逆透视到行?

ruby-on-rails - Postgres 服务器错误 -> PGError : could not connect to server

python - Clojure 的类 cx_Oracle 包

java - JDBC批量插入——控制插入速度

mysql - 标准化问题: Additional accuracy field for date (MySQL database)

php - 拉拉维尔 4 : DB:select returns rows ordered randomly