我正在尝试查询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。
答案 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