2016-03-01 47 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 –