Postgresql 8.3 不理解大于一天的负间隔
Postgresql 8.3 doesn't understand negative interval greater than a day
Postgresql 8.3 可以理解以下语句:
SELECT '1.12:00:00'::interval
SELECT '12:00:00'::interval
SELECT '-12:00:00'::interval
但是下面的语句没看懂:
SELECT '-1.12:00:00'::interval
我收到以下错误:
ERROR: invalid input syntax for type interval: "-1.00:02:00"
********** Error **********
ERROR: invalid input syntax for type interval: "-1.00:02:00"
SQL state: 22007
如何处理更大的负区间?
根据文档 for intervals,我认为正确的表示法是:
SELECT '-1 -12:00:00'::interval; -- Assuming you want an interval equivalent to -36 hours
postgres=# select '-36 hours'::interval = '-1 -12:00:00'::interval;
?column?
----------
t
(1 row)
顺便说一下,您的 1.12:00:00
符号可能没有达到预期效果 - 我的解释是您试图表示 36 小时(1 天 + 12 小时) - 由于相同符号问题。
postgres=# select
postgres-# '1.12:00:00'::interval = '36 hours'::interval,
postgres-# '1 12:00:00'::interval = '36 hours'::interval;
?column? | ?column?
----------+----------
f | t
(1 row)
根据对我的问题的反应和我自己的调查,问题原来是两种类型的混合使用:.NET 的 TimeSpan 和 NpgsqlTypes.NpgsqlInterval。我已将所有内容更改为 NpgsqlInterval,这解决了我的问题。
由于省略了 TimeSpan 类型的使用,我现在可以使用更大的间隔负值。当间隔大于一天(负数)时,TimeSpan 和 Interval 的工作方式不同,因此在这种情况下混合使用这些类型不是一个好主意。
Postgresql 8.3 可以理解以下语句:
SELECT '1.12:00:00'::interval
SELECT '12:00:00'::interval
SELECT '-12:00:00'::interval
但是下面的语句没看懂:
SELECT '-1.12:00:00'::interval
我收到以下错误:
ERROR: invalid input syntax for type interval: "-1.00:02:00"
********** Error **********
ERROR: invalid input syntax for type interval: "-1.00:02:00"
SQL state: 22007
如何处理更大的负区间?
根据文档 for intervals,我认为正确的表示法是:
SELECT '-1 -12:00:00'::interval; -- Assuming you want an interval equivalent to -36 hours
postgres=# select '-36 hours'::interval = '-1 -12:00:00'::interval;
?column?
----------
t
(1 row)
顺便说一下,您的 1.12:00:00
符号可能没有达到预期效果 - 我的解释是您试图表示 36 小时(1 天 + 12 小时) - 由于相同符号问题。
postgres=# select
postgres-# '1.12:00:00'::interval = '36 hours'::interval,
postgres-# '1 12:00:00'::interval = '36 hours'::interval;
?column? | ?column?
----------+----------
f | t
(1 row)
根据对我的问题的反应和我自己的调查,问题原来是两种类型的混合使用:.NET 的 TimeSpan 和 NpgsqlTypes.NpgsqlInterval。我已将所有内容更改为 NpgsqlInterval,这解决了我的问题。
由于省略了 TimeSpan 类型的使用,我现在可以使用更大的间隔负值。当间隔大于一天(负数)时,TimeSpan 和 Interval 的工作方式不同,因此在这种情况下混合使用这些类型不是一个好主意。