用于检查特定日期格式的SQL Case语句
我有一个Oracle表,表中有不同日期的col_date,我想根据以下条件更新我的表:用于检查特定日期格式的SQL Case语句,sql,string,oracle,datetime,case,Sql,String,Oracle,Datetime,Case,我有一个Oracle表,表中有不同日期的col_date,我想根据以下条件更新我的表: 如果col_date列的日期格式为“MM/dd/yy”,则将日期更改为oracle日期格式为“dd-MMM-yyy”,否则更新为空 在下列情况下受审: 选择字段1, 字段2, 案例 当检查日期输入类似于日期时(检查日期输入'MM/dd/yy') 然后是日期格式(到日期(检查日期输入'MM/dd/yy'),'dd MMM yyyy') 否则无效 以支票日期结束 从桌子上 此查询在所有情况下都将日期字段更新为n
选择字段1,
字段2,
案例
当检查日期输入类似于日期时(检查日期输入'MM/dd/yy')
然后是日期格式(到日期(检查日期输入'MM/dd/yy'),'dd MMM yyyy')
否则无效
以支票日期结束
从桌子上
此查询在所有情况下都将日期字段更新为null。请指导编写正确的案例条件。Oracle日期没有特定格式。它是以某种内部格式存储的,您实际上不需要担心。另一方面,在显示日期时,Oracle会构建一个日期的字符串表示形式,您可以在输出中看到该日期 默认情况下,格式由nls参数
nls\u date\u format
定义。通过在会话中更改数据库设置,或者在查询中明确使用to_char()
,可以将其更改为任何您喜欢的内容
假设您想要格式化dd-mmm-yyyy
,那么您可以执行以下任一操作:
alter session set nls_date_format = 'dd-mm-yyyy';
然后以以下方式运行查询:
select field1, field2, check_date_input from mytable
nls设置在会话的生命周期内保持有效,因此每个date
列都将以该格式显示在结果集中
或者,您可以在查询中使用来\u char()
:
select field1, field2, to_char(check_date_input, 'dd-mm-yyyy') as check_date_input from mytable
Oracle日期没有特定的格式。它是以某种内部格式存储的,您实际上不需要担心。另一方面,在显示日期时,Oracle会构建一个日期的字符串表示形式,您可以在输出中看到该日期 默认情况下,格式由nls参数
nls\u date\u format
定义。通过在会话中更改数据库设置,或者在查询中明确使用to_char()
,可以将其更改为任何您喜欢的内容
假设您想要格式化dd-mmm-yyyy
,那么您可以执行以下任一操作:
alter session set nls_date_format = 'dd-mm-yyyy';
然后以以下方式运行查询:
select field1, field2, check_date_input from mytable
nls设置在会话的生命周期内保持有效,因此每个date
列都将以该格式显示在结果集中
或者,您可以在查询中使用来\u char()
:
select field1, field2, to_char(check_date_input, 'dd-mm-yyyy') as check_date_input from mytable
Oracle日期数据类型没有格式。格式仅在使用内置函数将日期转换为\u CHAR或\u DATE时使用。Oracle不是MySQL。您应该从问题中删除“mysql”标记。请注意,Oracle日期数据类型同时包含日期和时间。LIKE运算符用于CHAR或VARCHAR2数据类型,而不用于日期数据类型。这正是您所编写的。else条件告诉您,如果格式不匹配,则返回null。2.请仅标记您正在使用的一个数据库,当前该数据库似乎混淆了。已删除标记,但是我的sql不适用于任何格式,它只更新为空值。您能帮助我修复查询问题吗..是否可以从表中提供一些混合格式的示例数据,以及您如何查看预期的输出。
检查日期输入的数据类型是什么
?如果它是varchar2,并且您混合了mm/dd/yy
和dd/mm/yy
,那么您确实遇到了麻烦,因为当dd
小于13时,无法判断它是哪一个。Oracle日期数据类型没有格式。格式仅在使用内置函数将日期转换为\u CHAR或\u DATE时使用。Oracle不是MySQL。您应该从问题中删除“mysql”标记。请注意,Oracle日期数据类型同时包含日期和时间。LIKE运算符用于CHAR或VARCHAR2数据类型,而不用于日期数据类型。这正是您所编写的。else条件告诉您,如果格式不匹配,则返回null。2.请仅标记您正在使用的一个数据库,当前该数据库似乎混淆了。已删除标记,但是我的sql不适用于任何格式,它只更新为空值。您能帮助我修复查询问题吗..是否可以从表中提供一些混合格式的示例数据,以及您如何查看预期的输出。检查日期输入的数据类型是什么
?如果它是varchar2,并且你混合了mm/dd/yy
和dd/mm/yy
,那么你真的有麻烦了,因为当dd
小于13时,没有办法分辨它是哪一个。