Oracle查询优化-07日期运算
生活随笔
收集整理的這篇文章主要介紹了
Oracle查询优化-07日期运算
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
7.1 加減日、月、年
在oracle中,date類(lèi)型可以直接加減天數(shù),而加減月份要用add_months函數(shù).
select a.hiredate 雇用日期,a.hiredate + 5 加5天,a.hiredate - 5 減5天,add_months(hiredate, 5) 加5個(gè)月,add_months(hiredate, -5) 減5個(gè)月,add_months(hiredate, 5 * 12) 加5年,add_months(hiredate, -5 * 12) 減5年from emp a where rownum <=1;雇用日期 加5天 減5天 加5個(gè)月 減5個(gè)月 加5年 減5年 ----------- ----------- ----------- ----------- ----------- ----------- ----------- 1980-12-17 1980-12-22 1980-12-12 1981-05-17 1980-07-17 1985-12-17 1975-12-177.2 加減時(shí)、分、秒
上面講過(guò),date可以直接加減天數(shù),那么1/24就是一小時(shí),分鐘與秒的加減類(lèi)同。
select a.hiredate,a.hiredate - 5 / 24 / 60 / 60 減5秒,a.hiredate + 5 / 24 / 60 / 60 加5秒,a.hiredate - 5 / 24 / 60 減5分鐘,a.hiredate + 5 / 24 / 60 加5分鐘,a.hiredate - 5 / 24 減5小時(shí),a.hiredate + 5 / 24 加5小時(shí)from emp awhere rownum <= 1;如果執(zhí)行時(shí),報(bào)錯(cuò)
數(shù)據(jù)庫(kù)服務(wù)器端的編碼和客戶端字符集編碼不一致。
我這邊用的數(shù)據(jù)庫(kù)西班牙語(yǔ),不支持中文。
7.3 日期間隔之時(shí)、分、秒
SQL> select duration,duration * 24 間隔小時(shí),duration * 24 * 60 間隔分鐘,duration * 24 * 60 * 60 間隔秒from (select (max(a.hiredate) - min(a.hiredate)) as duration from emp a wherea.ename in ('ALLEN', 'WARD')) x;DURATION 間隔小時(shí) 間隔分鐘 間隔秒 ---------- ---------- ---------- ----------2 48 2880 1728007.4 日期間隔之日、月、年
加減月份用函數(shù) add_months, 而計(jì)算月份間隔就要用函數(shù)months_between
select max_hd - min_hd 間隔天,months_between(max_hd, min_hd) 間隔月,months_between(max_hd, min_hd) /12 間隔年from (select min(hiredate) min_hd, max(hiredate) max_hd from emp) x;間隔天 間隔月 間隔年 ---------- ---------- ----------2348 77.1935483 6.432795697.5計(jì)算一年中周內(nèi)各日期的次數(shù)
問(wèn)題
計(jì)算一年中周內(nèi)各日期(星期日、星期一 ……星期六)的次數(shù)。
解決方案
要計(jì)算一年中周內(nèi)各日期分別有多少個(gè),必須:
生成一年內(nèi)的所有日期。
設(shè)置日期格式,得到每個(gè)日期對(duì)應(yīng)為星期幾。
計(jì)數(shù)周內(nèi)各日期分別有多少個(gè)。
總結(jié)
以上是生活随笔為你收集整理的Oracle查询优化-07日期运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle查询优化-05元数据查询
- 下一篇: Linux 常用命令一览