如何解决SQL Case语句,用于检查特定的日期格式
我有一个具有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
此查询在所有情况下都将日期字段更新为null。请指导编写正确的案例条件。
解决方法
Oracle日期没有特定的格式。它以某种内部格式存储,您实际上不必担心。另一方面,当显示日期时,Oracle将构建您在输出中看到的日期的字符串表示形式。
默认情况下,格式由nls参数nls_date_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
列都将以这种格式显示在结果集中。
或者,您可以在查询中使用to_char()
:
select field1,to_char(check_date_input,'dd-mm-yyyy') as check_date_input from mytable
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。