我必须写一个SQL请求从我有权访问的服务器中提取一些数据。服务器使用postgresql。
数据中的列看起来像20150102
。问题是,这些列是整数(不是字符串),因此似乎不被认为是日期。
但是,我需要提取观察结果,col1
中存储的日期早于col2
中存储的日期(加上x天)。
所以我在考虑:
WHERE
TO_DATE(col1, 'YYYYMMDD') < (TO_DATE(col2, 'YYYYMMDD') + 10 days)
我该怎么做?这里的语法是什么?
非常感谢!
答案 0 :(得分:2)
您需要将整数值转换为 text 1st:
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');