時間相關應用示例————
-
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;——2019-10-21 14:34:15
-
select to_char(sysdate,'ddd-day-dy-Q-WW-W') from dual;——294-星期一-4-42-3(當年第幾天-星期幾-星期幾縮寫-第幾季度-當年第幾周-當月第幾周)
-
select to_date('2019-10-21 14:34:15','yyyy-mm-dd hh24:mi:ss') from dual;——字符轉換為日期格式
-
select to_char (sysdate, 'yy-mm-dd-day-dy', 'NLS_DATE_LANGUAGE = American') from dual;——19-10-21-monday -mon (以英文顯示日期)
-
select * from nls_session_parameters;——查看系統支持的日期格式
- select to_number(sysdate - (sysdate-1))*24*60*60*1000 from dual;——86400000(相差多少天、時、分、秒、毫秒,相應增刪乘數即可)
-
select to_date(null) from dual;——如果時間為null,那么null也要轉換為時間格式
-
select to_char(add_months(trunc(sysdate),-1),'yyyy-mm') from dual;——2019-09(上個月)
-
select last_day(add_months(trunc(sysdate),-1)) from dual;——2019/9/30(當月最后一天)
-
select to_char(trunc(add_months(trunc(sysdate),-1),'month'),'yyyy-mm-dd HH24:MI:SS') from dual;——2019-09-01 00:00:00(上個月第一天)
-
select next_day(sysdate,7) from dual;——2019/10/26 15:16:43(從輸入日期得當下個星期天的日期,7可以換成其他星期數)
-
select months_between(to_date('2014-3-21','yyyy-mm-dd'), to_date('2014-3-20','yyyy-mm-dd')) months from dual;——0.032258064516129(兩個月差)
-
select extract(month from sysdate) from dual;——10(截取時間戳的某個字段,語法為extract(year|month|day|hour|minute|second from column_name))
-
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual;——365(計算當年有多少天)
-
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;——獲取內部表示的字節數