一、NVL()函数
1.1、1.NVL函数
NVL函数的格式如下:NVL(expr1,expr2)
含义是:如果oracle第一个参数为null那么显示第二个参数的值,如果第一个参数的值不为null,
则显示第一个参数本来的值。
例如:
SQL> select ename,NVL(comm, -1) from emp;
raise_application_error(-20011, 'Invalid date format: ’ || nvl(ds_mask, -1) || ', ’ || nvl(lang_tag, -1));
1.2、 NVL2函数
NVL2函数的格式如下:NVL2(expr1,expr2, expr3)
含义是:如果该函数的第一个参数为null那么显示第三个参数的值,如果第一个参数的值不为null,
则显示第二个参数的值。
例如:SQL> select ename,NVL2(comm,-1,1) from emp;
二、常用的日期函数
2.1、 获取当前时间: sysdate
select sysdate from dual;
2.2、 将字符串类型转换成日期类型: to_date(‘字符串’,‘日期格式’);
select to_date('2021/01/01 18:10:10','yyyy-mm-dd HH24:mi:ss') from dual
2.3、 将日期转换成字符串: to_char(日期类型数据,‘所转换的日期格式’);
select to_char( sysdate,'yyyy-mm-dd hh24:mi:ss' ) from dual
2.4、在给定日期的基础上了加n个月 : add_months(原日期数据,n);
select add_months(to_date('2021-01-01','yyyy-mm-dd'),4) from dual;
2.5、返回给定日期中该月的最后一天: last_day(给定日期数据); 如果该日期数据没有年份,会按sysdate的年计算该月的最后一天的日期。能够获取到某年某月的最后一天,省去了判断闰平年判断月份的步骤来获取。
select last_day(to_date('2019-02-01','yyyy-mm-dd')) from dual;
2.6、返回给定两个日期之间的月份差值: months_between(日期数据1,日期数据2); 得出的值的绝对值是两个日期之间的月份差,类似于日期数据1-日期数据2,日期数据1比日期数据2大,返回的就是正数,反之就是负数。
select months_between(to_date('2020-01','yyyy-mm'),to_date('2021-01','yyyy-mm')) from dual