我有一个带时区的时间戳列,我想在其中运行查询以返回所有匹配的日期。例如。我想要所有具有日期为 2019-09-30 的时间戳的行。我正在尝试这样的事情,但一直无法弄清楚:
SELECT * FROM table WHERE
x='1277' AND
date='2019-09-30 21:40:01.316240 +00:00'::DATE;
最佳答案
有两种选择:
范围搜索:
WHERE timestampcol >= TIMESTAMPTZ '2019-09-30' AND timestampcol < (TIMESTAMPTZ '2019-09-30' + INTERVAL '1 day')
使它变快的正确索引是
CREATE INDEX ON atable (timestampcol);
转换为
日期
:WHERE CAST(timestampcol AS date) = '2019-09-30'
使它变快的正确索引是
CREATE INDEX ON atable ((CAST(timestampcol AS date)));
这两种方法都同样有效。第二种方法有一个较短的 WHERE
子句,但是一个可能没有其他查询可以从中受益的专用索引。
关于sql - 从带有时区列的时间戳中选择匹配日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58236096/