COALESCEdb2日期

时间:2015-08-28 10:09:45

标签: sql db2

我正在尝试查询2个不同的日期字段,并且一个日期字段(datefield2)具有空值。我的日期字段是CCYYDDD,我通常按日期(数字(日期字段))将其转换为mm / dd / yyyy作为NewDate。

这失败

SELECT type, date(digits(datefield1)) AS DateEntered, coalesce(varchar(datefield2),'') as Renewed FROM MYDATA WHERE date(digits(datefeld1)) between '06/01/2015' and '6/30/2015' OR date(digits(coalesce(varchar(rendt7),''))) between '06/01/2015' and '06/30/2015'

以下成功

SELECT type, date(digits(datefield1)) AS DateEntered, coalesce(varchar(datefield2),'') as Renewed FROM MYDATA WHERE date(digits(datefeld1)) between '06/01/2015' and '6/30/2015' OR coalesce(varchar(rendt7),'') between '2015152' and '2015181

如何查询我的日期字段包含空值的位置?我计划将参数传递给日期范围值,而只是传递mm / dd / yyyy。

1 个答案:

答案 0 :(得分:1)

我对你的问题感到有点困惑,但我认为你真正想要的是TIMESTAMP_FORMAT功能。我认为会是这样的:

SELECT 
     type
    ,DATE(TIMESTAMP_FORMAT(datefield1,'YYYYDDD')) AS DateEntered
    ,DATE(COALESCE(TIMESTAMP_FORMAT(datefield2,'YYYYDDD'),'0001-01-01')) AS Renewed
FROM MYDATA
WHERE DATE(TIMESTAMP_FORMAT(COALESCE(datefield1, rendt7),'YYYYDDD'))
    BETWEEN @date1 AND @date2