我正在测试数据库中错误格式化为具有0值的月份或年份的日期。例如,20190001将是与2019年1月相对应的日期,该日的值为0。 20191500将是月份类别中值为0的日期。我试图通过选择子字符串的值并在CASE语句中使用它们来查询数据库,以查看有多少格式错误的值。您能帮我找到一种更好的方法吗?这是我的代码:
SELECT 'date' as test,
(CASE WHEN
(substring(cy.date,7, 2) OR substring(cy.date, 5, 2))
IS NULL
THEN 1 ELSE 0 END)
AS incorrect_format
(CASE WHEN
(substring(cy.date,7, 2) OR substring(cy.date, 5, 2))
IS NOT NULL
THEN 1 ELSE 0 END)
AS correct_format
FROM data.cy_dates cy
答案 0 :(得分:0)
对于这些特定示例,请使用like
:
(case when cy.date like '____00__' then 0
when cy.date like '______00' then 0
else 1
end)
当然,日期可能还会有其他问题。