我正在尝试让如下查询起作用:
SELECT EXTRACT(DAY FROM INTERVAL to_date - from_date) FROM histories;
Run Code Online (Sandbox Code Playgroud)
在引用的表中,to_date和from_date是没有时区的时间戳类型。常规查询如
SELECT to_date - from_date FROM histories;
Run Code Online (Sandbox Code Playgroud)
给我间隔结果,例如“65 天 04:58:09.99”。但是在第一个查询中使用此表达式会出现错误:类型间隔的输入语法无效。我尝试过各种引用,甚至嵌套查询,但没有运气。这可以做到吗?
从历史记录中选择 EXTRACT(DAY FROM INTERVAL to_date - from_date);
这毫无意义。INTERVAL xxx是区间文字的语法。INTERVAL from_date语法错误也是如此,因为from_date它不是文字。如果您的代码确实看起来更像INTERVAL '2012-02-01'那么那将会失败,因为2012-02-01这对于INTERVAL.
这里的关键词INTERVAL只是噪音。我怀疑您误解了文档中的示例。把它去掉,表情就可以了。
我猜您正在尝试获取表示为timestamp或 的两个日期之间的天数timestamptz。
如果是这样,请将两者都投射到日期:
SELECT to_date::date - from_date::date FROM histories;
Run Code Online (Sandbox Code Playgroud)
或获取间隔,然后提取日期部分:
SELECT extract(day from to_date - from_date) FROM histories;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12650 次 |
| 最近记录: |