如何在SQL中编写WHERE语句使用整数列作为日期?

时间:2016-03-01 01:17:05

标签: sql postgresql datetime

我必须写一个SQL请求从我有权访问的服务器中提取一些数据。服务器使用postgresql。

数据中的列看起来像20150102。问题是,这些列是整数(不是字符串),因此似乎不被认为是日期。

但是,我需要提取观察结果,col1中存储的日期早于col2中存储的日期(加上x天)。

所以我在考虑:

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

我该怎么做?这里的语法是什么?

非常感谢!

1 个答案:

答案 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');