我试图从彼此中减去2个日期,但似乎它没有正确减去,我不确定我在这里做错了什么。如果日期之间的差异小于90天,我使用case语句标记为1,否则将其标记为0.但即使日期之间的差异大于90天,它也始终标记为1。我是PostgreSQL,这是我的案例陈述:
CASE WHEN EXTRACT(DAY FROM CAST(SVS_DT AS DATE) - CAST(DSCH_TS AS DATE)) <90
THEN 1 ELSE 0 END AS FU90
日期的例子如下:
SVS_DT DSCH_TS
2013-03-22 00:00:00 2010-05-06 00:00:00
假设在这种情况下标记为0,但它标记为1,因为这两个日期之间的差异大于90天。
答案 0 :(得分:3)
extract
会返回日期的day元素。由于天数始终在1到31之间,因此最大差异为30,且不能大于90。
减去date
以整数形式返回天数的差异。因此,您只需要放弃extract
来电:
CASE WHEN (CAST(SVS_DT AS DATE) - CAST(DSCH_TS AS DATE)) < 90 THEN 1
ELSE 0
END AS FU90
答案 1 :(得分:1)
你可以使用下面的一个:
CASE WHEN (EXTRACT(EPOCH FROM (DATE_COLUMN_2 - DATE_COLUMN_1)) < (90*24*60*60)
THEN 1 ELSE 0 END AS FU90
这里它以秒为单位返回deference,因此您需要将90天转换为秒
答案 2 :(得分:0)
稍短的CAST版本。
SELECT CASE WHEN SVS_DT::DATE - DSCH_TS::DATE < 90
THEN 1
ELSE 0
END
AS FU90
答案 3 :(得分:0)
我们也可以在不使用任何EXTRACT或CAST关键字的情况下执行此操作:
SELECT CASE WHEN (DATE(SVS_DT)- DATE(DSCH_TS)) < 90
THEN 1
ELSE 0
END AS FU90