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

  1. 以CASE开头,以END结尾
  2. 分支中WHEN 后跟条件,THEN为显示结果
  3. ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
  4. 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
posted @ 2019-05-29 10:41  fly_bk  阅读(785)  评论(0编辑  收藏  举报