2016-03-01 21 views
0

我必須編寫一個SQL請求來從我有權訪問的服務器中提取一些數據。服務器使用postgresql。如何在使用整數列作爲日期的SQL中編寫WHERE語句?

數據中有一列看起來像20150102。問題是,這些列是整數(而不是字符串),因此似乎不被視爲日期。

但是,我需要將存儲在col1中的日期在存儲在col2(加上x天)中的日期之前進行抽取。

所以,我在想:

WHERE 
    TO_DATE(col1, 'YYYYMMDD') < (TO_DATE(col2, 'YYYYMMDD') + 10 days) 

我怎麼能這樣做?這裏的正確語法是什麼?

非常感謝!

回答

2

你需要投整數值文本 1:

WITH t(id,col1,col2) AS (VALUES 
    (1,20150102,20150103), 
    (2,20150102,20150103), 
    (3,20150102,20150102), 
    (4,20150102,20150110) 
) 
SELECT * FROM t WHERE 
to_date(col1::TEXT,'YYYYMMDD') < to_date(col2::TEXT,'YYYYMMDD' + interval '10 day'); 
+0

感謝德米特里,我想這個現在 –

+0

其實只是一個問題:我怎麼可以指定+ 10天,我需要做? –

+1

已更新@Noobie - 'interval '10 day'';關於此的所有文檔是http://www.postgresql.org/docs/current/static/functions-datetime.html –

相關問題