0
我想在postgresql查詢中創建一個tsrange
(上個星期四到上一個星期四),但我得到了轉換錯誤。從兩個時間戳創建PostgreSQL`tsrange`
這是我迄今爲止得到的(從this SO question開始)。
WITH past_week AS (
SELECT date_trunc('day', NOW() + (s::TEXT || ' day')::INTERVAL)::TIMESTAMP(0) AS day
FROM generate_series(-7, 0, 1) AS s)
SELECT (
date_trunc('day', (SELECT day FROM past_week WHERE EXTRACT(DOW FROM day) = '4') - '7 day'::INTERVAL),
date_trunc('day', (SELECT day FROM past_week WHERE EXTRACT(DOW FROM day) = '4')));
這是結果(正確的值,而不是格式,因爲它不是一個範圍):
row
-----------------------------------------------
("2015-10-29 00:00:00","2015-11-05 00:00:00")
(1 row)
現在,有兩個主要的事情來煩我:
如果我在查詢結束前嘗試添加
::tsrange
,解釋器會抱怨:錯誤:不能投入類型記錄tsiling 線6:... ROM past_week提取(DOW從一天)='4'))):tsrange;
我很想避免重複,但我不是那種精通SQL知道如何。任何改進都比歡迎。
這正是我一直在尋找。謝謝!還會有避免兩次寫入的方法嗎?(SELECT day FROM past_week WHERE EXTRACT(DOW FROM day)='4')'? – Jir
是的,請參閱編輯答案。 – klin