我 运行 postgres 中的这个查询说错误 'operator does not exist: interval + double precision'
I am running this query in postgres saying error 'operator does not exist: interval + double precision'
我正在使用这个查询
SELECT
(date_trunc('hour', b.pub_ts) - DATE '1970-01-01')* 24 * 60 * 60 +
EXTRACT(SECOND FROM b.pub_ts),
date_trunc('hour', b.pub_ts)
from tablename b
limit 10;
ERROR: operator does not exist: interval + double precision
LINE 1: ...ur', b.pub_ts) - DATE '1970-01-01')* 24 * 60 * 60 + EXTRACT...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
@Vao 说我尝试后输出是
实际输出应该是
因为那时我必须在小数点上应用舍入,但它是间隔的。
像这样
round (((date_trunc('hour', b.pub_ts) - DATE '1970-01-01')* 24 * 60 * 60) +
concat(EXTRACT(SECOND FROM b.pub_ts),' seconds')::interval,3)
而不是
+ EXTRACT(SECOND FROM b.pub_ts),
尝试
+concat(EXTRACT(SECOND FROM b.pub_ts),' seconds')::interval,
背后的想法是秒是间隔(或时间戳)中唯一可以有小数的部分,所以你需要明确定义你添加带小数的秒 - 然后它应该接受它
问题的答案
> round((extract(epoch from ((date_trunc('hour', b.pub_ts) -
DATE '1970-01-01')* 24 * 60 * 60)) +
EXTRACT(SECOND FROM b.pub_ts))::numeric,3)
并且如果您希望提取日期而不是 eposh
(round((extract(DAY from((date_trunc('hour', b.pub_ts)
- DATE '1970-01-01')* 24 * 60 * 60)) +
EXTRACT(SECOND FROM b.pub_ts))::numeric,3) *1000 / 1000)
https://www.postgresql.org/message-id/3FCF7C40.2040505%40klaster.net
我正在使用这个查询
SELECT
(date_trunc('hour', b.pub_ts) - DATE '1970-01-01')* 24 * 60 * 60 +
EXTRACT(SECOND FROM b.pub_ts),
date_trunc('hour', b.pub_ts)
from tablename b
limit 10;
ERROR: operator does not exist: interval + double precision
LINE 1: ...ur', b.pub_ts) - DATE '1970-01-01')* 24 * 60 * 60 + EXTRACT...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
@Vao 说我尝试后输出是
实际输出应该是
因为那时我必须在小数点上应用舍入,但它是间隔的。
像这样
round (((date_trunc('hour', b.pub_ts) - DATE '1970-01-01')* 24 * 60 * 60) +
concat(EXTRACT(SECOND FROM b.pub_ts),' seconds')::interval,3)
而不是
+ EXTRACT(SECOND FROM b.pub_ts),
尝试
+concat(EXTRACT(SECOND FROM b.pub_ts),' seconds')::interval,
背后的想法是秒是间隔(或时间戳)中唯一可以有小数的部分,所以你需要明确定义你添加带小数的秒 - 然后它应该接受它
问题的答案
> round((extract(epoch from ((date_trunc('hour', b.pub_ts) -
DATE '1970-01-01')* 24 * 60 * 60)) +
EXTRACT(SECOND FROM b.pub_ts))::numeric,3)
并且如果您希望提取日期而不是 eposh
(round((extract(DAY from((date_trunc('hour', b.pub_ts)
- DATE '1970-01-01')* 24 * 60 * 60)) +
EXTRACT(SECOND FROM b.pub_ts))::numeric,3) *1000 / 1000)
https://www.postgresql.org/message-id/3FCF7C40.2040505%40klaster.net