半高级PostgreSQL查询有什么问题? (与按时间和时间间隔进行计算有关。)

问题描述 投票:0回答:2

目标:

具有一列(该表中不存在)表示直到下次发生重复事件之前所剩余的秒数,这由“上一次完成”(时间戳)与“时间跨度”组合确定字符串”列,它是一个字符串,例如“ 7天”或“ 25分钟”或“ 2周”(标准PG兼容间隔字符串)。

查询:

SELECT 
    *, 
    now() - "last done" - "time span string"::interval AS "seconds left until next" 
FROM "recurring events" 
ORDER BY "seconds left until next" DESC NULLS LAST;

“距离下一个秒数”一列的值奇异,例如:

-1 days +00:32:04.389802

期望值示例:

123456

我不明白为什么它不使用列进行计算。似乎是在以解释的方式或某种方式构造它们的值的字符串。我不知道如何形容。

我尝试过:: integer AS表达式,但这只给了我错误:

ERROR: cannot cast type interval to integer

这个问题与实际表达式的正确“公式” /顺序无关,因为它不会将列(或单元格,而是一个整数)转换为整数(代表该秒数)活动直到下一次)。

sql postgresql date timestamp intervals
2个回答
0
投票

now() - "last done" - "time span string"::interval


0
投票

您要减去的值已经看起来像几秒钟。因此,只需减去两个日期/时间,然后转换为秒并减去时间跨度即可:

© www.soinside.com 2019 - 2024. All rights reserved.