简单函数之间的转换
快速查询:
column表示字段名
函数作用 | oracle | mysql |
---|---|---|
日期转字符串 | to_char | date_format |
字符串转日期 | to_date | str_to_date |
判断空值 | nvl | IFNULL |
转换数字 | to_number | cast |
条件判断 | decode | case then或if else |
时间串拼接 | numtodsinterval | contact |
decimal的转换 | to_char | cast(column as char) |
当前时间 | sysdate | now() |
substring区别 | 开始位置可以为0 | 开始位置不能为0 |
时间的计算 | 可以直接相减,默认单位为秒 | 使用 TIMESTAMPDIFF,默认单位为毫秒 |
分组排序 | row number over | 使用变量来实现 |
简单函数示例
一、当前时间
oracle语句:
select sysdate from dual
mysql语句:
select now()
二、日期转字符串
oracle语句:
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
mysql语句:
select DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')
三、字符串转日期
oracle语句:
select to_date('2019-01-01 08:00:00', 'yyyy-mm-dd hh24:mi:ss') from dual
mysql语句:
select STR_TO_DATE('2019-01-01 08:00:00',"%Y-%m-%d %H:%i:%s")
四、判断空值
oracle语句:
NVL(a,b)
mysql语句:
IFNULL(a,b)
五、转换数字
oracle语句:
to_number(column)
mysql语句:
转换成整形:
cast(column as unsigned int)
转换成浮点型:
cast(column as decimal(10,2))
六、条件判断
oracle语句:
select decode(mod(quantity,7),0,'A',1,'B','C') as qtype from biz_order
mysql语句:
使用case when:
Select case mod(quantity,7) when 0 then 'A'
when 1 then 'B'
else 'C'
end as qtype
from biz_order
使用if else:
不推荐使用if-else,因为我写不出来,建议使用case when,咳咳咳咳咳-----,
七、时间串拼接,numtodsinterval
oracle语句:
select a.*,
case when length(
ltrim(substr(numtodsinterval(ceil(a.reportperiod), 'second'),2,15),'0')
) = 6
then '0天' || substr(numtodsinterval(ceil(a.reportperiod), 'second'),12,8)
when a.reportperiod is null
then ''
else ltrim(substr(numtodsinterval(ceil(a