xyhero

转换函数

日期类型转换成字符类型

select to_char(sysdate) s1, --14-3月 -16
       to_char(sysdate, \'yyyy-mm-dd\') s2, --2016-03-14
       to_char(sysdate, \'yyyy\') s3, --2016
       to_char(sysdate, \'yyyy-mm-dd hh12:mi:ss\') s4, --2016-03-14 10:21:57
       to_char(sysdate, \'hh24:mi:ss\') s5, --10:21:57
       to_char(sysdate, \'DAY\') s6 --星期一
  from dual;

select * from mobile t where to_char(busi_date,\'yyyymm\')=\'201511\'

将字符类型转换为日期类型

select to_date(\'20150312\',\'yyyy-mm-dd\') from dual; --2015/3/12

返回两个日期间的天数

select floor(sysdate- to_date(\'20151110\',\'yyyymmdd\')) from dual;

返回最接近的日期

select sysdate S1,
       round(sysdate) S2, --当前日期时间
       round(sysdate,\'year\') YEAR, --年
       round(sysdate,\'month\') MONTH, --月
       round(sysdate,\'day\') DAY --返回最接近的周日
  from dual;

截取最接近的日期

select sysdate S1,
       trunc(sysdate) S2, --返回当前日期,无时分秒
       trunc(sysdate, \'year\') YEAR, --返回当前年的1月1日,无时分秒
       trunc(sysdate, \'month\') MONTH, --返回当前月的1日,无时分秒
       trunc(sysdate, \'day\') DAY --返回当前星期的星期天,无时分秒
  from dual;

计算时间差,ORACLE时间差是以天数为单位,所以换算成年,月,日

时间差-年

select floor(to_number(sysdate-to_date(\'2007-11-02 15:55:03\',\'yyyy-mm-dd hh24:mi:ss\'))/365) as spanYears from dual

时间差-月

select ceil(months_between(sysdate,to_date(\'2015-10-02 15:55:03\',\'yyyy-mm-dd hh24:mi:ss\'))) as spanMonths from dual

时间差-天

select floor(to_number(sysdate-to_date(\'2007-11-02 15:55:03\',\'yyyy-mm-dd hh24:mi:ss\'))) as spanDays from dual

时间差-时

select floor(to_number(sysdate-to_date(\'2007-11-02 15:55:03\',\'yyyy-mm-dd hh24:mi:ss\'))*24) as spanHours from dual

时间差-分

select floor(to_number(sysdate-to_date(\'2007-11-02 15:55:03\',\'yyyy-mm-dd hh24:mi:ss\'))*24*60) as spanMinutes from dual

时间差-秒

select floor(to_number(sysdate-to_date(\'2007-11-02 15:55:03\',\'yyyy-mm-dd hh24:mi:ss\'))*24*60*60) as spanSeconds from dual

更新时间,ORACLE时间加减是以天数为单位,设改变量为n,所以换算成年,月,日;

改变时间-年 n=3,2015-->2018 select to_char(sysdate,\'yyyy-mm-dd hh24:mi:ss\'),to_char(sysdate+n*365,\'yyyy-mm-dd hh24:mi:ss\') as newTime from dual;

n=3,2015-11-21-->2016-2-21

改变时间-月

select to_char(sysdate,\'yyyy-mm-dd hh24:mi:ss\'),add_months(sysdate,n)as newTime from dual

改变时间-日

select to_char(sysdate,\'yyyy-mm-dd hh24:mi:ss\'),to_char(sysdate+n,\'yyyy-mm-dd hh24:mi:ss\') as newTime from dual

改变时间-时

select to_char(sysdate,\'yyyy-mm-dd hh24:mi:ss\'),to_char(sysdate+n/24,\'yyyy-mm-dd hh24:mi:ss\') as newTime from dual

改变时间-分

select to_char(sysdate,\'yyyy-mm-dd hh24:mi:ss\'),to_char(sysdate+n/24/60,\'yyyy-mm-dd hh24:mi:ss\') as newTime from dual

改变时间-秒

select to_char(sysdate,\'yyyy-mm-dd hh24:mi:ss\'),to_char(sysdate+n/24/60/60,\'yyyy-mm-dd hh24:mi:ss\') as newTime from dual

查找月的第一天,最后一天,例如当前时间2015/11/21

select trunc(trunc(sysdate,\'month\')-1,\'MONTH\') First_Day_Last_Month,    --2015/10/1
       trunc(sysdate,\'month\')-1/86400 Last_Day_Last_Month,    --2015/10/31 23:59:59
       trunc(sysdate,\'month\') First_Day_Cur_Month,    --2015/11/1
       last_day(Trunc(sysdate,\'month\'))+1-1/86400 Last_Day_Cur_Month --2015/11/30 23:59:59
  from dual;

数字类型转换成字符类型

select sal,to_char(sal,\'$99999\') n1,to_char(sal,\'$99,999\') n2 from emp

转换为数字类型,以数字显示的小时数

select to_number(to_char(sysdate,\'hh12\')) from dual;
 

分类:

技术点:

相关文章: