我有兩列RegisterDate
和ActiveDays
(INT)添加詮釋爲DateTime
我想ActiveDays添加到RegisterDate和比較它的日期表,現在
我USEE下面的查詢
select RegisterDate + INTERVAL cast(ActiveDays as text) || ' day' .....
,但它導致錯誤:
syntax error at or near "cast"
我有兩列RegisterDate
和ActiveDays
(INT)添加詮釋爲DateTime
我想ActiveDays添加到RegisterDate和比較它的日期表,現在
我USEE下面的查詢
select RegisterDate + INTERVAL cast(ActiveDays as text) || ' day' .....
,但它導致錯誤:
syntax error at or near "cast"
要解釋你的錯誤,你有這樣的:
INTERVAL cast(ActiveDays as text) || ' day'
乍一看,這看起來像它應該工作一樣:
INTERVAL '5 day'
但是這裏INTERVAL
是實際上不是一個轉換運算符,它是對文本字符串類型的註釋 - 基本上,定義了引號的含義。
如果切換它交給一個普通CAST
,它的工作:
CAST(CAST(ActiveDays as text) || ' day' as INTERVAL)
或者你可以使用的Postgres的非標準::
投運營商,這使得它多一點可讀性:
(ActiveDays::text || ' day')::interval
或者,如klin's answer所示,您可以採取不同的方法,並將一天乘以適當的整數:
ActiveDays * INTERVAL '1 day'
請注意,在這裏我使用的是以前嘗試使用的文字語法。
用途:
select RegisterDate + ActiveDays* '1d'::interval ...
-- or simply as unit is `1 day` (thanks to @a_horse_with_no_name)
select RegisterDate + ActiveDays
例子:
select '2015-01-01'::date + 5
?column?
---------------------
2015-01-06 00:00:00
(1 row)
如果單位爲天,您可以直接添加一個整數:'current_date + 1' –