Oracle 日期處理函數+常用函數示例

參考自:原文鏈接(非常詳細)

時間相關應用示例————

  1. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;——2019-10-21 14:34:15

  2. select to_char(sysdate,'ddd-day-dy-Q-WW-W') from dual;——294-星期一-4-42-3(當年第幾天-星期幾-星期幾縮寫-第幾季度-當年第幾周-當月第幾周)

  3. select to_date('2019-10-21 14:34:15','yyyy-mm-dd hh24:mi:ss') from dual;——字符轉換爲日期格式

  4. select to_char (sysdate, 'yy-mm-dd-day-dy', 'NLS_DATE_LANGUAGE = American') from dual;——19-10-21-monday   -mon   (以英文顯示日期)

  5. select * from nls_session_parameters;——查看系統支持的日期格式

  6. select to_number(sysdate - (sysdate-1))*24*60*60*1000 from dual;——86400000(相差多少天、時、分、秒、毫秒,相應增刪乘數即可)
  7. select to_date(null) from dual;——如果時間爲null,那麼null也要轉換爲時間格式

  8. select to_char(add_months(trunc(sysdate),-1),'yyyy-mm') from dual;——2019-09(上個月)

  9. select last_day(add_months(trunc(sysdate),-1)) from dual;——2019/9/30(當月最後一天)

  10. select to_char(trunc(add_months(trunc(sysdate),-1),'month'),'yyyy-mm-dd HH24:MI:SS') from dual;——2019-09-01 00:00:00(上個月第一天)

  11. select next_day(sysdate,7) from dual;——2019/10/26 15:16:43(從輸入日期得當下個星期天的日期,7可以換成其他星期數)

  12. select months_between(to_date('2014-3-21','yyyy-mm-dd'), to_date('2014-3-20','yyyy-mm-dd')) months from dual;——0.032258064516129(兩個月差)

  13. select extract(month from sysdate) from dual;——10(截取時間戳的某個字段,語法爲extract(year|month|day|hour|minute|second from column_name))

  14. select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual;——365(計算當年有多少天)

  15. select to_char(last_day(to_date('02','mm')),'yyyy-mm-dd') from dual;——2019-02-28(獲取當年2月最後一天信息,判斷是否閏年)


時間常用函數總結:

  • select SYSDATE from dual;——2019/10/21 16:07:37(獲取系統時間)
  • Select last_day(sysdate) from dual;——2019/10/31 16:09:19(獲取輸入date類型的最後一天)
  • Select add_months(sysdate,2) from dual;——2019/12/21 16:12:29(左參數日期,右參數當前月份加減數,獲取相差月份的日期)
  • select months_between(sysdate,to_date('2019-09-12','yyyy-mm-dd'))from dual;——1.31224499701314(日期相差的月份)
  • SELECT next_day(sysdate,2) FROM dual;——2019/10/28 16:20:17(下週2日期)
  • select sessiontimezone,current_date from dual;——+08:00,2019/10/21 16:21:53(返回時區和當前會話時區中的當前日期)
  • select extract(month from sysdate) "This Month" from dual;——10(按規則得到時間字段,extract(year|month|day|hour|minute|second from column_name) = value)
  • SELECT   TRUNC (SYSDATE, 'DD'),TRUNC (SYSDATE, 'MM'),TRUNC (SYSDATE, 'yyyy'),TRUNC (SYSDATE, 'day'),TRUNC (SYSDATE, 'q') FROM DUAL;——(截取:當天、本月第一天、本年第一天、本週第一天、本季度第一天;另外還可以截取時分秒)

其他常用函數總結:

  • select concat('010-','88888888') from dual;——010-88888888(連接字符串,oracle的concat函數不能連接超過兩個,三個及以上需要嵌套使用,或者用管道符||進行連接)
  • select substr('12345',3,2) from dual——34(截取字符串,下標基1,從3開始截取兩個字符);
  • select instr('oracle traning','ra',1,2)  from dual;——9(從1開始查找第2個出現的'ra'字符串,返回下標,若找不到則返回0)
  • select initcap('smith hEllo') from dual;——Smith Hello(格式化字符串,使單詞首字符大小,其餘小寫)
  • select lpad(rpad('gao',10,'*'),17,'*')from dual;——*******gao*******(在指定字符的左或右拼接指定符號,使總長度達到指定的數字)
  • select replace('he love you','he','I') from dual;——I love you(用指定字符替換相應字符)
  • select trim('a' from 'abacda') from dual;——bacd(用單字符刪除首尾第一個字符,若匹配則刪除)
  • select trim('      abacd       ') from dual;——(刪除首位空格)
  • select ceil(3.1415927) from dual;——4(取整,大於自身)
  • select floor(3.1415927) from dual;——3(取整,不小於自身)
  • select round(55.655, 2) from dual;——55.66(四捨五入取整,保留小數點右邊兩位,若是負數則保留小數點左邊)
  • select trunc (55.655, 2) from dual;——(截取,只舍不入)
  • select abs(-100) from dual;——100(獲取絕對值)
  • SELECT LENGTH (' ') FROM DUAL;——(返回字符串長度,空則爲空)
  • select lower('AaBbCcDd') from dual;——(變小寫)
  • select upper('AaBbCcDd') from dual;——(變大寫)
  • select ASCII('s') from dual;——(返回字符的十進制ascii碼)
  • select xm from table1 where soundex(xm)=soundex('weather');——(查找發音類似的字符串)
  • select mod(10,3) from dual;——1(求餘數)
  • select power(3,3) from dual;——27(求次方)
  • select sign(123),sign(-100),sign(0) from dual;——1,-1,0(檢查正負)
  • select sqrt(64),sqrt(10) from dual;——(計算平方根)
  • Select ASCIISTR ('中國') from dual;——(轉換數據庫字符集的ASCII碼)
  • Select decode('a','金',1,'銀',2,0) from dual;——0(用a跟後面參數進行比對,如果是比對成功就顯示該值,否則顯示默認值0)
  • Select nullif('a', 'b') from dual;——a(比較兩個表達式,相等返回null,否則返回第一個結果)
  • Select nvl(null,0) from dual;——0(如果第一個參數爲空,則返回第二個參數)
  • Select nvl2(null,1,0) from dual;——0(不爲空則返回第二個參數,爲空則返回第三個參數)
  • 分組統計函數:
    • AVG([DISTINCT|ALL]col)——求平均值
    • COUNT(*|[DISTINCT|ALL] col)——求總數
    • MAX([DISTINCT|ALL]col)——求最大值
    • MIN([DISTINCT|ALL]col)——求最小值
    • SUM([DISTINCT|ALL]col)——求和
  • 獲取數據庫信息:
    •   

      SELECT SYS_CONTEXT ('USERENV', 'TERMINAL') 客戶端名稱,
      SYS_CONTEXT ('USERENV', 'LANGUAGE') 客戶端語言,
      SYS_CONTEXT ('USERENV', 'SESSIONID') sessionid,
      SYS_CONTEXT ('USERENV', 'INSTANCE') instance,
      SYS_CONTEXT ('USERENV', 'ENTRYID') entryid,
      SYS_CONTEXT ('USERENV', 'ISDBA') isdba,
      SYS_CONTEXT ('USERENV', 'NLS_TERRITORY') 地區,
      SYS_CONTEXT ('USERENV', 'NLS_CURRENCY') 貨幣,
      SYS_CONTEXT ('USERENV', 'NLS_CALENDAR') nls_calendar,
      SYS_CONTEXT ('USERENV', 'NLS_DATE_FORMAT') 時間格式,
      SYS_CONTEXT ('USERENV', 'NLS_DATE_LANGUAGE') 時間語言,
      SYS_CONTEXT ('USERENV', 'NLS_SORT') nls_sort,
      SYS_CONTEXT ('USERENV', 'CURRENT_USER') current_user,
      SYS_CONTEXT ('USERENV', 'CURRENT_USERID') current_userid,
      SYS_CONTEXT ('USERENV', 'SESSION_USER') session_user,
      SYS_CONTEXT ('USERENV', 'SESSION_USERID') session_userid,
      SYS_CONTEXT ('USERENV', 'PROXY_USER') proxy_user,
      SYS_CONTEXT ('USERENV', 'PROXY_USERID') proxy_userid,
      SYS_CONTEXT ('USERENV', 'DB_DOMAIN') db_domain,
      SYS_CONTEXT ('USERENV', 'DB_NAME') 數據庫名稱,
      SYS_CONTEXT ('USERENV', 'HOST') 客戶端完成名稱,
      SYS_CONTEXT ('USERENV', 'OS_USER') 客戶端用戶,
      SYS_CONTEXT ('USERENV', 'EXTERNAL_NAME') external_name,
      SYS_CONTEXT ('USERENV', 'IP_ADDRESS') 客戶端IP地址,
      SYS_CONTEXT ('USERENV', 'NETWORK_PROTOCOL') 網絡協議,
      SYS_CONTEXT ('USERENV', 'BG_JOB_ID') bg_job_id,
      SYS_CONTEXT ('USERENV', 'FG_JOB_ID') fg_job_id,
      SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE') authentication_type,
      SYS_CONTEXT ('USERENV', 'AUTHENTICATION_DATA') authentication_data
      FROM DUAL;

  • select user from dual;——查詢當前數據庫的登錄用戶名
  • select userenv('language') from dual;——返回當前地區、語言和字符集

  • select vsize('中') from dual;——獲取內部表示的字節數

原文出處:https://www.cnblogs.com/gdou/p/11715056.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章