我有一列日期,有两种不同格式的数据:yyyy-mm-dd和dd / mm / yyyy。 因此,我必须识别日期的格式,以便我可以以正确的格式转换它们。我的SQL查询如下:
select *
from teste
where
(CASE
WHEN data like '%-%' THEN
TO_DATE(data, 'yyyy-mm-dd') BETWEEN
TO_DATE(01/01/2000, 'dd/mm/yyyy') AND
TO_DATE(01/01/2016, 'dd/mm/yyyy')
ELSE
TO_DATE(data, 'dd/mm/yyyy') BETWEEN
TO_DATE(01/01/2000, 'dd/mm/yyyy') AND
TO_DATE(01/01/2016, 'dd/mm/yyyy')
END)
运行这个,我收到错误:
00905. 00000 - “缺少关键字”
*原因:
*行动:
Erro na linha:6 Coluna:35。
似乎在between子句中存在问题。有人可以帮我这个吗?
答案 0 :(得分:0)
CASE
表达式返回一些值。你应该把这个值与某些东西进行比较。你不能将整个表达式放在CASE中。
E.g。
select *
from teste
where
CASE WHEN data like '%-%' THEN
TO_DATE(data, 'yyyy-mm-dd')
ELSE
TO_DATE(data, 'dd/mm/yyyy')
END
BETWEEN TO_DATE(01/01/2000, 'dd/mm/yyyy') AND
TO_DATE(01/01/2016, 'dd/mm/yyyy')