佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Oracle查詢優(yōu)化日期運算實例詳解

Oracle查詢優(yōu)化日期運算實例詳解

熱門標簽:服務外包 Linux服務器 AI電銷 鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 百度競價排名 地方門戶網(wǎng)站 呼叫中心市場需求

 加減日、月、年

在Oracle中,date類型可以直接加減天數(shù),而加減月份要用add_months函數(shù).

select a.hiredate 雇用日期,
    a.hiredate + 5 加5天,
    a.hiredate - 5 減5天,
    add_months(hiredate, 5) 加5個月,
    add_months(hiredate, -5) 減5個月,
    add_months(hiredate, 5 * 12) 加5年,
    add_months(hiredate, -5 * 12) 減5年
 from emp a where rownum =1;


雇用日期 加5天 減5天 加5個月 減5個月 加5年 減5年
----------- ----------- ----------- ----------- ----------- ----------- -----------
1980-12-17 1980-12-22 1980-12-12 1981-05-17 1980-07-17 1985-12-17 1975-12-17

加減時、分、秒

上面講過,date可以直接加減天數(shù),那么1/24就是一小時,分鐘與秒的加減類同。

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小時,
    a.hiredate + 5 / 24 加5小時
 from emp a
 where rownum = 1;

如果執(zhí)行時,報錯

數(shù)據(jù)庫服務器端的編碼和客戶端字符集編碼不一致。

我這邊用的數(shù)據(jù)庫西班牙語,不支持中文。

日期間隔之時、分、秒

SQL> select duration,
    duration * 24 間隔小時,
    duration * 24 * 60 間隔分鐘,
    duration * 24 * 60 * 60 間隔秒
 from (select (max(a.hiredate) - min(a.hiredate)) as duration from emp a where
    a.ename in ('ALLEN', 'WARD')) x;


 DURATION    間隔小時    間隔分鐘    間隔秒
---------- ---------- ---------- ----------
     2     48    2880   172800

日期間隔之日、月、年

加減月份用函數(shù) add_months, 而計算月份間隔就要用函數(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.43279569

計算一年中周內(nèi)各日期的次數(shù)

問題

計算一年中周內(nèi)各日期(星期日、星期一 ……星期六)的次數(shù)。

解決方案

要計算一年中周內(nèi)各日期分別有多少個,必須:

  1. 生成一年內(nèi)的所有日期。
  2. 設置日期格式,得到每個日期對應為星期幾。
  3. 計數(shù)周內(nèi)各日期分別有多少個。
with x as
 (select level lvl
  from dual
 connect by level =
       (add_months(trunc(sysdate, 'y'), 12) - trunc(sysdate, 'y')))
select to_char(trunc(sysdate, 'y') + lvl - 1, 'DAY'), count(*)
 from x
 group by to_char(trunc(sysdate, 'y') + lvl - 1, 'DAY');

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • oracle 查詢當天數(shù)據(jù)的sql條件寫法
  • oracle使用to_date查詢一周的第一天日期
  • Oracle查詢最近幾天每小時歸檔日志產(chǎn)生數(shù)量的腳本寫法
  • oracle實現(xiàn)按天,周,月,季度,年查詢排序方法
  • Oracle 獲取上周一到周末日期的查詢sql語句
  • Oracle中查詢本月星期5的所有日期列表的語句
  • oracle查詢截至到當前日期月份所在年份的所有月份
  • Oracle實現(xiàn)查詢2個日期所跨過的月份列表/日期列表的方法分析
  • oracle實現(xiàn)動態(tài)查詢前一天早八點到當天早八點的數(shù)據(jù)功能示例

標簽:黃山 蘭州 湘潭 仙桃 湖南 銅川 衡水 崇左

巨人網(wǎng)絡通訊聲明:本文標題《Oracle查詢優(yōu)化日期運算實例詳解》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    黄龙县| 清丰县| 巢湖市| 泾源县| 湾仔区| 玉溪市| 竹山县| 日照市| 大洼县| 张家川| 高州市| 东光县| 错那县| 铁力市| 黄石市| 得荣县| 磴口县| 鹤壁市| 马尔康县| 泊头市| 磐安县| 慈溪市| 鄢陵县| 钟祥市| 密山市| 灵宝市| 娄底市| 蕲春县| 屏南县| 常州市| 镇安县| 新化县| 微山县| 云龙县| 镇江市| 色达县| 江都市| 巫溪县| 时尚| 尉犁县| 永年县|