【轉】oracle trunc()函數的用法


oracle 的常用日期格式字符 與trunc函數2009-09-30 17:47

oracle 的常用日期格式字符 與trunc函數

yyyy 年 mm 月 dd 日 hh24 小時 mi 分鍾 ss 秒 .sss 毫秒 

w 表示某月的第幾周
ww 表示某年的第幾周

如果要截取某個時間的某部分時間,可以使用如下函數:
trunc( sysdate,'hh24')    得到按小時取整的時間,該時間的分、秒的值為0。其他的同

例子:統計2008年以來每周執行的語句數。
select count(*) ,to_char(trunc(start_time,'ww'),'yyyy-ww') stat_time from my_log where start_time>=to_date('2008-1','yyyy-mm') group by trunc(start_time,'ww') order by stat_time

oracle trunc()函數的用法!2007-04-30 14:22

 

------------------rudy

        關於TRUNC函數的format,自己現在有點體會,format為day時,只精確到天,而不管幾年幾月只要是符合的day就可以了,要想確定一年中的某月的某一天就要用trunc(date,'dd').

通俗的說吧,format為年時,精確到-----年

                             為月時,精確到------年,月(不管哪年,只要是相同的月和哪天)
                              為日時,精確到------年,月,日(不管哪年的哪月,只關心是哪天)   

-----------------郁悶.今天才真正明白了.

 

1.TRUNC(for dates)
           TRUNC函數為指定元素而截去的日期值。
           其具體的語法格式如下:
           TRUNC(date[,fmt])
           其中:
           date           一個日期值
           fmt                   日期格式,該日期將由指定的元素格式所截去。忽略它則由最近的日期截去
           下面是該函數的使用情況:
           TRUNC(TO_DATE(’24-Nov-1999 08:00 pm’,’dd-mon-yyyy hh:mi am’))
                   =’24-Nov-1999 12:00:00 am’
           TRUNC(TO_DATE(’24-Nov-1999 08:37 pm’,’dd-mon-yyyy hh:mi am’,’hh’))           =’24-Nov-1999 08:00:00 am’

round     (date,'format')未指定format時,如果日期中的時間在中午之前,則將日期中的時間截斷為12     A.M.(午夜,一天的開始),否則進到第二天。   

TRUNC(date,'format')未指定format時,將日期截為12     A.M.,不考慮是否在中午之前的條件。

2.TRUNC(for number)
           TRUNC函數返回處理后的數值,其工作機制與ROUND函數極為類似,只是該函數不對指定小數前或后的部分做相應舍入選擇處理,而統統截去。
           其具體的語法格式如下
           TRUNC(number[,decimals])
           其中:
           number           待做截取處理的數值
           decimals           指明需保留小數點后面的位數。可選項,忽略它則截去所有的小數部分
           下面是該函數的使用情況:
           TRUNC(89.985,2)=89.98
           TRUNC(89.985)=89
           TRUNC(89.985,-1)=80
           注意:第二個參數可以為負數,表示為小數點左邊指定位數后面的部分截去,即均以0記。

(在網上找的關於oracle trunc()函數的用法)

 

 

1SYSDATE

該函數返回當前的日期和時間。返回的是Oracle服務器的當前日期和時間。

 

select sysdate from dual; insert into purchase values (‘Small Widget’,’SH’,sysdate, 10); insert into purchase values (‘Meduem Wodget’,’SH’,sysdate-15, 15);

查看最近30天的所有銷售記錄,使用如下命令:

select * from purchase where purchase_date between (sysdate-30) and sysdate;

2USER

查看用戶名。

select user from dual;

3USERENV

查看用戶環境的各種資料。

select userenv(‘TERMINAL’) FROM dual;

 

 

 

 

 

 

 

1ROUND 四舍五入函數

ROUND(數值,保留位數)

 

select round(3.1415,3) from deul; select product_name,round(product_price,0) price from product;

2TRUNC 從數中截去小數部分

TRUNC(數值,截斷小數點n位后的數)

select trunc(3.145159,3) from dual; select trunc(123456.45,-1) from dual; select trunc(123456.45) from dual; select product_name,trunc(product_price) price from product;

 

1UPPERLOWERINITCAP

這三個函數更改提供給它們的文體的大小寫。

select upper(product_name) from product; select lower(product_name) from product; select initcap(product_name) from product;

函數INITCAP能夠整理雜亂的文本,如下:

select initcap(‘this TEXT hAd UNpredictABLE caSE’) from dual;

2LENGTH

求數據庫列中的數據所占的長度。

 

 

 

 

 

select product_name,length(product_name) name_length from product order by product_name;

3SUBSTR

取子串,格式為:

SUBSTR(源字符串,起始位置,子串長度);

create table item_test(item_id char(20),item_desc char(25)); insert into item_test values(‘LA-101’,’Can, Small’); insert into item_test values(‘LA-102’,’Bottle, Small’); insert into item_test values(‘LA-103’,’Bottle, Large’);

取編號:

select substr(item_id,4,3) item_num,item_desc from item_test;

4INSTR

確定子串在字符串中的位置,格式如下:

INSTR(源字符串,要查找的字符串,查找起始位置)

select instr(‘this is line one’,’line’,1) from dual;

其返回值為子串在源字符串中從起始位置開始第一次出現的位置。上面例子的返回值為9。

select item_desc , instr(item_desc,’,’,1) from item_test;

5LTRIMRTRIMTRIM

去除字符串左邊的空格、去除字符串右邊的空格、去除字符串左右兩邊的空格。

select ltrim(‘ abc def ‘) from dual;

 

1SYSDATETRUNC

這兩個函數前面已經出現過,即取Oracle服務器系統的日期和截掉小數部分的功能。觀察以下操作:

create table test_date (name varchar2(20), p_date date); insert into test_date values(‘name1’,sysdate); select * from test_date; select * from test_date where p_date=’25-10月-05‘; select * from test_date where trunc(p_date)= ’25-10月-05‘;

Oracle系統中用SYSDATE取得的不僅包含日期而且還包含的有時間信息,時間信息實際上就是表示儒略日數據中的小數部分。

 

 

 

 

 

 

 

 

 

 

 

2ADD_MONTHS

該函數返回一個具有與所提供日期相差月份的日期,函數中給出了未來或以前的月份數。語法如下:

ADD_MONTHS(起始日期,增減月數) select add_months(’26-10月-05‘,2) from dual; select add_months(’26-10月-05‘,-2)from dual;

3LAST_DAY

返回包含給定日期的那個月的最后一天。語法為:

LAST_DAY(日期)

select last_day(’21-2月-80‘) from dual;

4MONTHS_BETWEEN

返回兩個日期間的月份。語法為:

MONTHS_BETWEEN(較晚日期,較早日期)

select months_between(’12-10月-05‘,’12-9月-03‘) from dual;

 

1TO_CHAR

該函數將日期、時間和數值轉換為文本。它的主要價值是提供對日期、時間和數的顯示控制;該函數的用法非常靈活,使用較復雜,在此我們僅對經常使用的轉換舉例說明。

1)格式化日期和時間值

TO_CHAR(日期數據,格式編碼)

select to_char(sysdate,’YYYY-MM-DD HH24:MI:SS’) from dual; select to_char(sysdate,’HH24:MI:SS’) from dual; select to_char(sysdate,‘YYYY’)||‘年’|| to_char(sysdate,'MM')||'月'|| to_char(sysdate,'DD')||'日' 日期 from dual

2)格式化數值

select to_char(5764.12345,'99,999.9999') from dual; select to_char(5764.12345,‘09,999.9999') from dual;

(2)TO_DATE

將文本轉換為實際的Oracle日期/時間值。格式:

TO_DATE(文本,日期格式)

select to_date(‘2005-10-10 11’,’YYYY-MM-DD HH24’) from dual; insert into item_test values( ‘name-x’, to_date(‘2005-10-25’,’YYYY-MM-DD’) ) ;

 

NVL函數完成一個簡單但有用的功能。任何時候給它一個空值,它都返回一個你所選擇的值。格式如下:

NAL(輸入值,如果輸入值為空要返回的值)

select nvl(null,’new_value’) from dual; select name,nvl(p_date,sysdate) from test_date ;

注意:函數中輸入值如果輸入值為空要返回的值的類型必須一致。

   /opt/BOCO.DAL/NPM/common/mbin/invoker/GP-NPM_invoker.pl -o "862" -s "2010-01-18 13:00:00" -e "2010-01-18 14:00:00" -task_id "832793" -table_list "tpd_tkgp"


2G:
tpd_msc
tpd_msc_rb
tpd_radio_bts(164數據庫)
tpa_radio_sum_t3
tpd_hlr
tpd_hlr_rb
tpd_ggsn
tpd_sgsn
tpd_sgsn_rb
tpd_sdp
tpd_scp
tpd_smp
tpd_smsc_traf
tpd_smsc_rb
tpd_tkgp 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM