SELECT substr('20161230',1,4)||'-'||substr('20161230',5,2)||'-'||substr('20161230',7,2) as REGDATE from dual 这样写是不是影响效率
表达式运算是无所谓效率的,不过下面这样写比较易读。而且日期值不对时(比如20160230)还会报错,一举两得。 SELECT TO_CHAR(TO_DATE('20161230','yyyymmdd'),'yyyy-mm-dd') as REGDATE from dual
-- 如果不验证数据的有效性,只是机械的拼接,可以考虑一下正则SQL> SQL> with m as ( 2 select '20161230' c from dual 3 ) 4 select regexp_replace(c, '(....)(..)(..)','\1-\2-\3') result from m; RESULT ---------- 2016-12-30SQL>
这样写是不是影响效率
SELECT TO_CHAR(TO_DATE('20161230','yyyymmdd'),'yyyy-mm-dd') as REGDATE from dual
-- 如果不验证数据的有效性,只是机械的拼接,可以考虑一下正则SQL>
SQL> with m as (
2 select '20161230' c from dual
3 )
4 select regexp_replace(c, '(....)(..)(..)','\1-\2-\3') result from m;
RESULT
----------
2016-12-30SQL>