oracle 对比mysql
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>