oracle 对比mysql

2020-10-28  本文已影响0人  wsj1211

1 . to_char() to_date()

oracle中的转字符:to_char()
oracle中的转日期:to_date()

mysql中的转字符:date_format(date,'%Y-%m-%d') 相当于oracle中的to_char()

mysql中的转日期:str_to_date(date,'%Y-%m-%d') 相当于oracle中的to_date()

%Y:代表四位年 (相当于oracle中的yyyy)注意这里严格大写。

%m:代表两位月份(01,02……10,12)

%d:代表月份中两位天数(01,02……30,31)

%e:代表月份中的天数(1,2,3,4……30,31)
%e:代表月份中的天数(1,2,3,4……30,31)

===================================================

%H:代表24小时的小时格式(00,01,02……12,13,14……20,21,22,24)

%k:代表24小时的小时格式(0,1,2……12,13,14……20,21,22,24)

%h:代表12小时的小时格式(01,02,03……11,12)

%l:代表12小时的小时格式(1,2,3……11,12)

%i:代表分钟(格式为00,01,02……58,59)

%r:表示12小时的时间格式(hh:mm:ss)

%T:表示24小时的时间格式(hh:mm:ss)

行转列 in 逗号分隔的值

oracle :
j.BUSINESS_ID in ( SELECT REGEXP_SUBSTR (s.JUROR_APPLY_ID , '[^,]+', 1,rownum) from dual connect by rownum <![CDATA[ <= ]]> LENGTH (s.JUROR_APPLY_ID ) - LENGTH (regexp_replace(s.JUROR_APPLY_ID , ',', ''))+1 )

mysql:
find_in_set(j.BUSINESS_ID, s.JUROR_APPLY_ID)

列转行 LISTAGG WITHIN GROUP / GROUP_CONCAT

ORCLE
LISTAGG(H.HOLIDAY_DATE',') WITHIN GROUP( ORDER BY H.HOLIDAY_DATE ) as dayOff,

MYSQL
GROUP_CONCAT(H.HOLIDAY_DATE, ',') as dayOff,

add_month() / ADDDATE()

ORACLE
add_months(sysdate,-6)
MYSQL
ADDDATE(sysdate(),-6)
获取当前时间 oracle: sysdate mysql sysdate()

列出一个月的日期

ORACLE

 SELECT
       concat(to_char(sysdate,'yyyy-MM'),'-') || lpad( LEVEL, 2, 0 ) datevalue,
       lpad( LEVEL, 2, 0 ) dd
      FROM
       dual CONNECT BY LEVEL <=   ( SELECT to_number( substr( last_day( sysdate), 0, 2 )) FROM dual )

MYSQL

 SELECT
        date_add(
            CONCAT(YEAR(Date(curdate())),'-0',MONTH(Date(curdate())),'-','01'),
            INTERVAL ( cast( help_topic_id AS signed INTEGER ) ) DAY 
            ) DAY ,
        lpad( cast( help_topic_id AS signed INTEGER )+1 ,2,0)  as dd
    FROM
        mysql.help_topic 
    WHERE
        help_topic_id < DAY ( last_day( curdate( ) ) ) 
    ORDER BY
        help_topic_id

mysql 函数 :
1.CAST( value AS type )
type的类型有

value   描述
DATE    日期,格式为 'YYYY-MM-DD'.
DATETIME    日期加具体的时间,格式为 'YYYY-MM-DD HH:MM:SS'.
TIME    时间,格式为 'HH:MM:SS'.
CHAR    字符型
SIGNED  int
UNSIGNED    无符号int
BINARY  二进制型
DECIMAL float型

mysql.help_topic表的自增id是从0开始所以在进行截取

查询重复数据 获取重复数据的第一条数据

ORACLE

 select t.* from
       (select
        *,
       row_number() OVER(PARTITION BY INSTANCE_ID ORDER BY CREATE_DATE desc) as row_flg
       from IN_OVERTIME_WORK_EXECUTE 
       )t
       where t.row_flg  = 1

MYSQL

 select t.* from
       (select *  from IN_OVERTIME_WORK_EXECUTE  ORDER BY CREATE_DATE DESC )t
        group by t.INSTANCE_ID
    </select>
上一篇下一篇

猜你喜欢

热点阅读