【TRUNC】使用TRUNC函式完成對時間的擷取
使用TRUNC函式可以完成時間的擷取功能。
1.設定一下時間的顯示樣式
sec@secooler> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
Session altered.
2.以系統時間為例,檢視當前時間
sys@secooler> select sysdate from dual;
SYSDATE
-------------------
2010-03-31 00:22:48
3.不使用參數列示擷取到日
sys@secooler> select trunc(sysdate) trunc_default from dual;
TRUNC_DEFAULT
-------------------
2010-03-31 00:00:00
4.擷取到年
以下八種方法都可以完成擷取到年的功能。
sys@secooler> select trunc(sysdate,'YEAR') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'SYYYY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'YYYY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'SYEAR') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'YYY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'YYY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'YY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'Y') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
5.擷取到月
以下四種方法都可以完成擷取到月的功能。
sys@secooler> select trunc(sysdate,'MONTH') trunc_mounth from dual;
TRUNC_MOUNTH
-------------------
2010-03-01 00:00:00
sys@secooler> select trunc(sysdate,'MON') trunc_mounth from dual;
TRUNC_MOUNTH
-------------------
2010-03-01 00:00:00
sys@secooler> select trunc(sysdate,'MM') trunc_mounth from dual;
TRUNC_MOUNTH
-------------------
2010-03-01 00:00:00
sys@secooler> select trunc(sysdate,'RM') trunc_mounth from dual;
TRUNC_MOUNTH
-------------------
2010-03-01 00:00:00
6.擷取到日
以下三種方法都可以完成擷取到日的功能。
sys@secooler> select trunc(sysdate,'DDD') trunc_day from dual;
TRUNC_DAY
-------------------
2010-03-31 00:00:00
sys@secooler> select trunc(sysdate,'DD') trunc_day from dual;
TRUNC_DAY
-------------------
2010-03-31 00:00:00
sys@secooler> select trunc(sysdate,'J') trunc_day from dual;
TRUNC_DAY
-------------------
2010-03-31 00:00:00
7.擷取到小時
以下三種方法都可以完成擷取到小時的功能。
sys@secooler> select trunc(sysdate,'HH') trunc_hour from dual;
TRUNC_HOUR
-------------------
2010-03-31 00:00:00
sys@secooler> select trunc(sysdate,'HH12') trunc_hour from dual;
TRUNC_HOUR
-------------------
2010-03-31 00:00:00
sys@secooler> select trunc(sysdate,'HH24') trunc_hour from dual;
TRUNC_HOUR
-------------------
2010-03-31 00:00:00
8.擷取到分鐘
sys@secooler> select trunc(sysdate,'MI') trunc_minute from dual;
TRUNC_MINUTE
-------------------
2010-03-31 00:22:00
9.trunc應用--解決因時分秒不同導致無返回記錄的問題
sys@secooler> create table t (x date,y timestamp);
Table created.
sys@secooler> insert into t values (sysdate,sysdate);
1 row created.
sys@secooler> update t set y=sysdate;
1 row updated.
sys@secooler> commit;
Commit complete.
sys@secooler> select * from t;
X Y
------------------- ------------------------------------
2010-03-31 00:31:20 31-MAR-10 12.31.28.000000 AM
此時我們如果直接查詢x與y相等的記錄是沒有返回結果的。
sys@secooler> select * from t where x = y;
no rows selected
如果我們同時使用trunc擷取到天,結果將不同
sys@secooler> select * from t where trunc(x,'DD')=trunc(y,'DD');
X Y
------------------- ------------------------------------
2010-03-31 00:31:20 31-MAR-10 12.31.28.000000 AM
10.小結
在Oracle資料中日期的操作相對複雜,如果可以善加利用與日期相關的函式,便會達到事半功倍的效果。
Good luck.
secooler
10.03.30
-- The End --
1.設定一下時間的顯示樣式
sec@secooler> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
Session altered.
2.以系統時間為例,檢視當前時間
sys@secooler> select sysdate from dual;
SYSDATE
-------------------
2010-03-31 00:22:48
3.不使用參數列示擷取到日
sys@secooler> select trunc(sysdate) trunc_default from dual;
TRUNC_DEFAULT
-------------------
2010-03-31 00:00:00
4.擷取到年
以下八種方法都可以完成擷取到年的功能。
sys@secooler> select trunc(sysdate,'YEAR') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'SYYYY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'YYYY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'SYEAR') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'YYY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'YYY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'YY') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
sys@secooler> select trunc(sysdate,'Y') trunc_year from dual;
TRUNC_YEAR
-------------------
2010-01-01 00:00:00
5.擷取到月
以下四種方法都可以完成擷取到月的功能。
sys@secooler> select trunc(sysdate,'MONTH') trunc_mounth from dual;
TRUNC_MOUNTH
-------------------
2010-03-01 00:00:00
sys@secooler> select trunc(sysdate,'MON') trunc_mounth from dual;
TRUNC_MOUNTH
-------------------
2010-03-01 00:00:00
sys@secooler> select trunc(sysdate,'MM') trunc_mounth from dual;
TRUNC_MOUNTH
-------------------
2010-03-01 00:00:00
sys@secooler> select trunc(sysdate,'RM') trunc_mounth from dual;
TRUNC_MOUNTH
-------------------
2010-03-01 00:00:00
6.擷取到日
以下三種方法都可以完成擷取到日的功能。
sys@secooler> select trunc(sysdate,'DDD') trunc_day from dual;
TRUNC_DAY
-------------------
2010-03-31 00:00:00
sys@secooler> select trunc(sysdate,'DD') trunc_day from dual;
TRUNC_DAY
-------------------
2010-03-31 00:00:00
sys@secooler> select trunc(sysdate,'J') trunc_day from dual;
TRUNC_DAY
-------------------
2010-03-31 00:00:00
7.擷取到小時
以下三種方法都可以完成擷取到小時的功能。
sys@secooler> select trunc(sysdate,'HH') trunc_hour from dual;
TRUNC_HOUR
-------------------
2010-03-31 00:00:00
sys@secooler> select trunc(sysdate,'HH12') trunc_hour from dual;
TRUNC_HOUR
-------------------
2010-03-31 00:00:00
sys@secooler> select trunc(sysdate,'HH24') trunc_hour from dual;
TRUNC_HOUR
-------------------
2010-03-31 00:00:00
8.擷取到分鐘
sys@secooler> select trunc(sysdate,'MI') trunc_minute from dual;
TRUNC_MINUTE
-------------------
2010-03-31 00:22:00
9.trunc應用--解決因時分秒不同導致無返回記錄的問題
sys@secooler> create table t (x date,y timestamp);
Table created.
sys@secooler> insert into t values (sysdate,sysdate);
1 row created.
sys@secooler> update t set y=sysdate;
1 row updated.
sys@secooler> commit;
Commit complete.
sys@secooler> select * from t;
X Y
------------------- ------------------------------------
2010-03-31 00:31:20 31-MAR-10 12.31.28.000000 AM
此時我們如果直接查詢x與y相等的記錄是沒有返回結果的。
sys@secooler> select * from t where x = y;
no rows selected
如果我們同時使用trunc擷取到天,結果將不同
sys@secooler> select * from t where trunc(x,'DD')=trunc(y,'DD');
X Y
------------------- ------------------------------------
2010-03-31 00:31:20 31-MAR-10 12.31.28.000000 AM
10.小結
在Oracle資料中日期的操作相對複雜,如果可以善加利用與日期相關的函式,便會達到事半功倍的效果。
Good luck.
secooler
10.03.30
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-630855/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Oracle SQL】months_between與trunc函式OracleSQL函式
- JavaScript Math.trunc vs Math.floor All In OneJavaScript
- substr擷取函式 筆記函式筆記
- MySQL 字串函式:字串擷取MySql字串函式
- sql常用函式詳解(一)——字串擷取SQL函式字串
- MySQL 字串擷取相關函式總結MySql字串函式
- Javascript之字串擷取函式slice()、substring()、substr()JavaScript字串函式
- Oracle計算時間函式(對時間的加減numtodsinterval、numtoyminterval)Oracle函式
- MySQl 擷取函式 left(),right(),substring(),substring_index() 的用法MySql函式Index
- PHP 時間函式PHP函式
- SPL 的日期時間函式函式
- Golang時間函式及測試函式執行時間案例Golang函式
- python函式教程:Python 字串操作(string替換、擷取等)Python函式字串
- T-SQL——函式——時間操作函式SQL函式
- MySQL 的日期和時間函式MySql函式
- Clickhouse 時間日期函式函式
- JavaScript 擷取指定指定區間字串JavaScript字串
- 時間函式:與時間相關那些事。。。函式
- python之為函式執行設定超時時間(允許函式執行的最大時間)Python函式
- 關於 Date 函式獲取各類時間/日期/天數函式
- 快取函式的簡單使用快取函式
- 636. 函式的獨佔時間函式
- 使用正則擷取URL,獲取你想要的
- FreeRTOS-04-核心控制函式+時間管理函式函式
- Linux時間的獲取與使用Linux
- 何時使用函式表示式與函式宣告函式
- 排序(對於 sort 函式的使用)排序函式
- 使用jiffies的時間比較函式time_after、time_before函式
- 使用ASM框架實現統計函式執行時間ASM框架函式
- JS字串擷取函式slice(),substring(),substr()的用法 區別split()後期遇到補充JS字串函式
- mysql 擷取指定的兩個字串之間的內容MySql字串
- 探索MySQL高階語句(數學函式、聚合函式、字串函式、日期時間函式)MySql函式字串
- (未完成)APC函式的執行,分析 KiDeliverApc 函式函式IDE
- joda-time的簡單使用及mysql時間函式的使用(今天,本週,本月)MySql函式
- MySQL 日期函式、時間函式在實際場景中的應用MySql函式
- [提問交流]分享一個擷取字串的函式字串函式
- 如何使用python中的取整floor函式?Python函式
- shell 使用陣列及字串擷取陣列字串
- 字串擷取字串