【Oracle函數】數字,日期,轉換,字符串


-----------------------------oracle數據庫函數-------------------------------------
---數學函數***
select abs(-1) from dual;
--向上取整
select ceil(2.5)from dual;
select ceil(-2.4)from dual;
select ceil(-2.6)from dual;

--向下取整
select floor(2.5) from dual;
select floor(-2.5) from dual;
select floor(-2.6) from dual;

--四舍五入 注意:4 5之分
select round(2.4)from dual;
select round(2.5)from dual;
select round(-2.4)from dual;
select round(-2.5)from dual;

--冪 2^3 第一個參數是底數 第二個參數是指數
select power(2,3)from dual;

--平方根
select sqrt(3)from dual;

--截斷:用於截取小數位數 
--第一個參數是目標參數 第二天參數表示保留的小數位數
select trunc(123.456,2) from dual;
select trunc(123.456,0) from dual;

--取模 取余
select mod(10,3) from dual;

---日期轉換函數*****

--時間格式
--yyyy-MM-dd HH:mi:ss
--HH默認24小時制 1-23:59:59
--HH12表示12小時制 1-12

--to_char()將日期轉換成字符串
select sysdate from dual;
select to_char(sysdate,'yyyy-MM-dd HH:mi:ss') from dual;

--to_date()將字符串轉換成日期
select to_date('2017-11-2','yyyy-MM-dd HH:mi:ss') from dual;

select * from ttt_demo01;
insert into ttt_demo01 values(102,'scott',200.99,to_date('1992-11-2','yyyy-MM-dd HH:mi:ss'));

--轉換含有數字的字符串
select to_number('1233.456') from dual;

SELECT TO_TIMESTAMP('2016-12-12 12:23:34', 'YYYY-MM-DD HH:MI:SS') FROM DUAL;
--添加了時區
SELECT TO_TIMESTAMP_TZ('2016-12-12 12:23:34 8:00', 'YYYY-MM-DD HH24:MI:SS TZH:TZM') FROM DUAL;


---日期操作函數*****

--截取目標日期里的時間,比如獲取當前系統時間的年、月、日
--注意在截取當前系統時間的年月日,可以直接寫成 year/month/day from sysdate
--但是hour minute second不可以這么寫,需要先轉換成字符串,再轉換成日期
select extract( year from sysdate) from dual;
select extract( month from sysdate) from dual;
select extract( day from sysdate) from dual;

select extract( second from to_timestamp(to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS')) from dual;

select extract(hour from TO_TIMESTAMP('2016-12-12 12:23:34', 'YYYY-MM-DD HH24:MI:SS')) from dual;
select extract(minute from TO_TIMESTAMP('2016-12-12 12:23:34', 'YYYY-MM-DD HH24:MI:SS')) from dual;
select extract(second from TO_TIMESTAMP('2016-12-12 12:23:34', 'YYYY-MM-DD HH24:MI:SS')) from dual;

--計算月差:兩個日期之間相差的月數
--注意:計算結果是第一個參數減第二個參數
select months_between(sysdate,to_date('1995-11-11','YYYY-MM-DD HH:mi:ss'))from dual;

select months_between
(to_date('1980-11-1','YYYY-MM-DD HH:mi:ss'),
to_date('1995-11-11','YYYY-MM-DD HH:mi:ss'))from dual;

--添加月數
select add_months(sysdate,2)from dual;
select add_months(to_date('2017-11-1','YYYY-MM-DD HH:mi:ss'),-13)from dual;

--獲取當前系統時間以后的時間(星期)
--一周的組合以下周的日期(本周已過的日期或者正在過的日期)
--和本周的日期(本周還未過的日期)加起來
select next_day(sysdate,'Monday') from dual;--下周一
select next_day(sysdate,'Tuesday') from dual;--下周二
select next_day(sysdate,'Wednesday') from dual;--下周三
select next_day(sysdate,'Thursday') from dual;--本周四
select next_day(sysdate,'Friday') from dual;--本周五
select next_day(sysdate,'Saturday') from dual;--本周六
select next_day(sysdate,'Sunday') from dual;--本周日

--每個月的最后一天
select last_day(sysdate)from dual;
select last_day(to_date('2016-2-1','YYYY-MM-DD'))from dual;
--對日期的四舍五入
select round(sysdate,'year') from dual;
select round(sysdate,'month') from dual;
--對年的四舍五入 分界點是6月和7月
select round(to_date('2017-6-1','YYYY-MM-DD'),'year') from dual;
select round(to_date('2017-7-1','YYYY-MM-DD'),'year') from dual;
--對月的四舍五入 分界點是15日和16日
select round(to_date('2017-6-1','YYYY-MM-DD'),'month') from dual;
select round(to_date('2017-6-15','YYYY-MM-DD'),'month') from dual;
select round(to_date('2017-6-16','YYYY-MM-DD'),'month') from dual;

select round(to_date('2016-2-15','YYYY-MM-DD'),'month') from dual;
select round(to_date('2016-2-16','YYYY-MM-DD'),'month') from dual;

--截取日期
--此處的day表示星期幾
--獲取離當前時間最近的星期日(已經過了的)
select trunc(sysdate,'day')from dual;
--獲取年初
select trunc(to_date('2017-5-5','yyyy-MM-dd'),'year')from dual;
select trunc(to_date('2016-5-5','yyyy-MM-dd'),'year')from dual;


---字符串函數***

--將字符串轉換為大寫
select upper(username) from t_user;
select lower(username)from t_user;
--拼接字符串
select 'abc'||'def' from dual;
select username||password from t_user;
select concat(username,password)from t_user;
--列的寬度、長度(列值的寬度)
select length(username)from t_user;
--填充
--左填充 第一個參數目標參數,第二個參數 填充完之后的字符串長度
--第三個參數 填充的數據
--該例子是用字符b為字符a做填充
select lpad('a',1,'b')from dual;
select lpad('a',2,'b')from dual;
select lpad('a',3,'b')from dual;

select rpad('a',1,'b')from dual;
select rpad('a',2,'b')from dual;
select rpad('a',3,'b')from dual;
select * from t_user;
--去空
--左去空
select ltrim(username)from t_user;
--右去空
select rtrim(username)from t_user;
--去前后空
select trim(username)from t_user;

--檢索字符串(查詢某字符串所在的索引位置) oracle中字符串索引從1開始
select instr('abcdefg','c')from dual;
select instr('abcdefg','cff')from dual;
select instr('abcdefg','cde')from dual;

--截取字符串
--兩個參數的時候 第一個參數表示目標字符串,第二個參數表示從索引位置開始截取到最后
select substr('abcdefg',2) from dual;
--三個參數的時候 第一個參數表示目標字符串,第二個參數表示從索引位置開始截取
--第三個參數表示截取的長度
select substr('abcdefg',2,5) from dual;

--替換
select replace('abcdefg','a','AAA')from dual;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM