oracle时间问题 与case then
思路一
--select * from nls_session_parameters where parameter='NLS_DATE_LANGUAGE';
-- 修改会话的默认日期格式
ALTER SESSION SET nls_date_format = 'YYYY-MM-DD';
-- 临时改变一下会话的默认语言, 以识别类似 '12-MAY-05' 的日期格式
alter session set nls_date_language = 'AMERICAN';
-- 改回简体中文语言:
alter session set nls_date_language = 'SIMPLIFIED CHINESE';
修改数据库的参数,需要重启数据库后生效
SQL> alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;
思路二
case then
- 以CASE开头,以END结尾
- 分支中WHEN 后跟条件,THEN为显示结果
- ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
- END 后跟别名
例:
case when instr(f.create_date,'月')>0
then TO_CHAR(TO_DATE(REPLACE(f.create_date,' ',''), 'dd-mm"月"-yy'),'yyyymmdd')
else f.create_date end