Google Spanner Postgres DB如何查询最近5小时创建的ID?
解决PostgreSQL中查询最近5小时数据的问题
你的问题核心并非PostgreSQL不支持INTERVAL,而是存在两个常见的语法/类型匹配问题:
- 关键字冲突:
table和Date都是PostgreSQL的保留关键字,直接使用会触发语法错误,需用双引号包裹。 - 时间类型不匹配:
current_date返回不带时区的日期类型,和表中timestamp with time zone类型的Date列比较时,逻辑会出现偏差(比如current_date - INTERVAL '5 hour'得到的是当前日期前一天的固定时间,而非当前时间往前推5小时)。
正确的查询语句
直接使用带时区的当前时间戳(current_timestamp或now())计算,同时包裹关键字:
SELECT Id FROM "table" WHERE "Date" > current_timestamp - INTERVAL '5 hour';
等价写法:
SELECT Id FROM "table" WHERE "Date" > now() - INTERVAL '5 hour';
补充说明
current_timestamp和now()均返回当前的timestamp with time zone类型值,与你的Date列类型完全匹配,计算逻辑准确(当前时间往前推5小时)。- 若表名或列名不是关键字,可省略双引号,但建议养成包裹关键字的习惯以避免语法错误。
内容的提问来源于stack exchange,提问作者Sneha Mule
相关产品推荐
相关产品推荐

