【发布时间】:2021-01-31 13:50:16
【问题描述】:
我有一个包含不同日期 col_date 的 Oracle 表,我想根据以下条件更新我的表:
- 如果 col_date 列的日期采用“MM/dd/yy”格式,则将日期更改为 oracle 日期格式,如“dd-MMM-yyyy”,否则更新为 null。
尝试以下情况:
select field1,
field2,
case
when Check_Date_Input like to_date(Check_Date_Input,'MM/dd/yy')
then date_format(to_date(Check_Date_Input, 'MM/dd/yy'), 'dd-MMM-yyyy')
else null
end as check_date
from Table
此查询在所有情况下都将日期字段更新为空。请指导写正确的case条件。
【问题讨论】:
-
Oracle DATE 数据类型没有格式。格式仅在使用内置函数 TO_CHAR 或 TO_DATE 转换 DATE 时使用。甲骨文不是 MySQL。您应该从问题中删除“mysql”标签。请注意,Oracle DATE 数据类型同时包含日期和时间。 LIKE 运算符用于 CHAR 或 VARCHAR2 数据类型,不适用于 DATE 数据类型。
-
这正是你所写的。你的 else 条件告诉返回 null 以防格式不匹配。 2. 请只标记您正在使用的一个数据库,目前它似乎混淆了。
-
删除了标签,但我的 sql 不适用于任何格式,它只更新为空值。你能帮我修复查询吗
-
很好..是否可以从表格中提供一些混合格式的示例数据以及您如何看到预期的输出。
-
check_date_input的数据类型是什么?如果它是 varchar2 并且你有mm/dd/yy和dd/mm/yy的混合,那么你真的有麻烦了,因为当dd小于 13 时,无法判断它是哪一个。
标签: sql string oracle datetime case