Oracle日期型及處理方法講解

2021-12-30 07:22:34 字數 2562 閱讀 2895

sysdate()獲取的日期精確到秒

select add_months(to_date('2010-2-27','yyyy-mm-dd'),1) new_date from dual結果:2010-3-27

當某年的2月只有28天, 那麼新增乙個月後,返回3月的最後一天

select add_months(to_date('2010-2-28','yyyy-mm-dd'),1) new_date from dual結果:2010-3-31

如果增加月份之後的日期為非法日期,將返回該月的最後一天

select add_months(to_date('2010-1-30','yyyy-mm-dd'),1) new_date from dual結果:2010-2-28

select last_day(to_date('2010-2-28','yyyy-mm-dd')) new_date from dual結果:2010-2-28

months_between()返回2個日期相減所得的月數,返回值不一定是整數

select months_between(to_date('2010-4-4','yyyy-mm-dd'),to_date('2010-2-6','yyyy-mm-dd')) as new_date from dual結果:1.93548….

如果第乙個引數小於第二個引數,返回值就是負數

select next_day(to_date('2010-4-4','yyyy-mm-dd'),2) new_date from dual結果:2010-4-5

第二個引數代表星期幾,在oracle中,1代表星期日,2代表星期一…

trunc(日期,擷取格式)

select trunc(sysdate,'dd') new_date from dual結果:2010-4-5

select trunc(sysdate,'mm') new_date from dual結果:2010-4-1

trunc(sysdate,』mm』)將當前日期擷取到月,獲得結果2010-4-1,即當前月份的第一天

select trunc(sysdate,'mi') new_date from dual結果:2010-4-5 15:44:00

trunc(sysdate,』mi』)將當前日期擷取到分鐘,忽略分鐘以後的部分。擷取日期實際是將其中某些資訊位置為0

select sessiontimezone,to_char(current_date,'yyyy-mm-dd hh:mi:ss') result from dual結果:+08:00 2010-4-5 4:25:26

sessiontimezone返回當前時區,current_date返回當前日期

select sessiontimezone,current_timestamp from dual結果:+08:00 05-4月 -10 04.51.11.640000 下午 +08:00

select extract(網域名稱,from 日期)

select extract(month from sysdate) new_month from dual結果;4

注意:在日期型中無法分解出小時、分鐘、秒等資訊。想要獲得小時等資訊,則必須使用日期時間型作為資料來源

select extract(hour from systimestamp) new_month from dual結果:14

注意:此時的小時資訊是零時區的標準時間

可以自行建立乙個函式獲得乙個日期的所有資訊

create or replace function get_field(p_date date,p_format varchar2)

return varchar2

isval varchar2(10);

tmp_date varchar2(20);

begin

tmp_date:=to_char(p_date,'yyyy-mm-dd hh24:mi:ss');

if lower(p_format)='year' then

val:=substr(tmp_date,1,4);

end if;

if lower(p_format)='month' then

val:=substr(tmp_date,6,2);

end if;

if lower(p_format)='day' then

val:=substr(tmp_date,9,2);

end if;

if lower(p_format)='hour' then

val:=substr(tmp_date,12,2);

end if;

if lower(p_format)='minute' then

val:=substr(tmp_date,15,2);

end if;

if lower(p_format)='second' then

val:=substr(tmp_date,18,2);

end if;

return val;

end;select to_char(sysdate,'yyyy-mm-dd') new_date from dual結果:2010-4-5

Oracle中數值型及處理方法

number型別的精度表示可以標識資料精確度的位數。對於數字13245.977,當精確到小數點後2位,資料為12345.98,此時精度為7。而當精確到小數點前2位,資料為12300,此時精度為3,因為有3個數字對資料的準確度作出貢獻 number型別中。小數字數可正可負,當為負數時,表示將數字精確到...

Oracle學習筆記 日期型處理 Date 。

oracle中最常用的日期型別為date和timestamp date date型別包含了以下資訊 century 世紀 year 年份 month 月份 day 天數 hour 小時 minute 分鐘 second 秒 oracle日期的格式為 yyyy mm dd hh24 mi ss.sel...

Oracle時間日期處理方法

1 用於擷取年 月 日 時 分 秒 extract 函式 extract year from sysdate year extract month from sysdate month extract dayfrom sysdate day extract hour from sysdate hou...