oracle 常用日期計算

2021-04-16 21:23:32 字數 4753 閱讀 9758

sysdate

為資料庫伺服器的當前系統時間。

to_char

是將日期型轉為字元型的函式。

to_date

是將字元型轉為日期型的函式,一般使用

yyyy-mm-dd hh24:mi:ss

格式,當沒有指定時間部分時,則預設時間為

00:00:00

dual

表為sys

使用者的表,這個表僅有一條記錄,可以用於計算一些表示式,如果有好事者用

sys

使用者登入系統,然後在

dual

表增加了記錄的話,那麼系統

99.999%

不能使用了。為什麼使用的時候不用

sys.dual

格式呢,因為

sys

已經為dual

表建立了所有使用者均可使用的別名。

一年的第一天

select to_date(to_char(sysdate,'yyyy')||'-01-01','yyyy-mm-dd'

) from dual

季度的第一天

select to_date(to_char(sysdate,'yyyy-')||lpad(floor(to_number(to_char(sysdate,'mm'))/3)*3+1,2,'0')||'-01', 'yyyy-mm-dd')from dual

floor

為向下取整

lpad

為向左使用指定的字元擴充字串,這個擴充字串至

2位,不足的補

'0'。

當天的半夜

select trunc(sysdate)+1-

1/24/60

/60from dual

trunc

是將sysdate

的時間部分截掉,即時間部分變成

00:00:00

oracle

中日期加減是按照天數進行的,所以

+1-1/24/60/60

使時間部分變成了

23:59:59

。oracle 8i

中僅支援時間到秒,

9i以上則支援到

1/100000000

秒。上個月的最後一天

select trunc(last_day(add_months(sysdate,-1)))+1-

1/24/60

/60from dual

add_months

是月份加減函式。

last_day

是求該月份的最後一天的函式。

本年的最後一天

select trunc(last_day(to_date(to_char(sysdate,'yyyy')||'-12-01','yyyy-mm-dd'))

)+1-

1/24/60

/60from dual

本月的最後一天

select trunc(last_day(sysdate))+1-

1/24/60

/60from dual

本月的第乙個星期一

select next_day(to_date(to_char(sysdate,'yyyy-mm')||'-01','yyyy-mm-dd'),

'星期一')from dual

next_day

為計算從指定日期開始的第乙個符合要求的日期,這裡的

'星期一

'將根據

nls_date_language

的設定稍有不同。

去掉時分秒

select trunc(sysdate)from dual

顯示星期幾

select to_char(sysdate,'day')from dual

取得某個月的天數

select trunc(last_day(sysdate))-to_date(to_char(sysdate,'yyyy-mm')||'-01','yyyy-mm-dd')+

1from dual

判斷是否閏年

select decode(

to_char(last_day(to_date(to_char(sysdate,'yyyy')||'-02-01','yyyy-mm-dd')),'dd'),

'28','

平年','閏年'

)from dual

乙個季度多少天

select last_day(to_date(to_char(sysdate,'yyyy-')||lpad(floor(to_number(to_char(sysdate,'mm'))/3)*3+3,2,'0')|| '-01','yyyy-mm-dd')) - to_date(to_char(sysdate,'yyyy-')||lpad(floor(to_number(to_char(sysdate,'mm'))/3)*3+1,2,'0')||'-01','yyyy-mm-dd') +1from dual

1add_months()用於從乙個日期值增加或減少一些月份

sql> select add_months(sysdate,12) "next year" from dual;

2current_date()返回當前會放時區中的當前日期

sql> select sessiontimezone,current_date from dual;

3current_timestamp()timestamp with time zone資料型別返回當前會放時區中的當前日期

4dbtimezone()返回時區

varchar_value:=dbtimezone

sql> select dbtimezone from dual;

5extract()找出日期或間隔值的字段值

sql> select extract(month from sysdate) "this month" from dual;

sql> select extract(year from add_months(sysdate,36)) "3 years out" from dual;

sql>  

6last_day()返回包含了日期引數的月份的最後一天的日期

date_value:=last_day(date_value)

sql> select last_day(date'

2000-02-01

') "leap yr?" from dual;

sql> select last_day(sysdate) "last day of this month" from dual;

sql>  

7localtimestamp()返回會話中的日期和時間

timestamp_value:=localtimestamp

sql> select localtimestamp from dual;

sql> select localtimestamp,current_timestamp from dual;

sql> select localtimestamp,to_char(sysdate,'dd-mm-yyyy hh:mi:ss am') "sysdate" sql>  

8months_between()判斷兩個日期之間的月份數量

number_value:=months_between(date_value,date_value)

sql> select months_between(sysdate,date'

1971-05-18

') from dual;

sql> select months_between(sysdate,date'

2001-01-01

') from dual;

9next_day()給定乙個日期值,返回由第二個引數指出的日子第一次出現在的日期值(應返回相應日子的名稱字串)

oracle日期計算

取當前小時,以及相隔一小時 v begin date to date to char sysdate,yyyy mm dd hh24 yyyy mm dd hh24 v end date v begin date 1 24 執行結果 v begin date 2013 9 12 上午 09 00 0...

oracle日期加減計算

oracle資料庫中有多種對日期加減的計算方法,廢話不多說,開始。1 直接加減。1 求當前時間及一天後 select sysdate,sysdate 1 from dual 輸出為 2018 1 24 14 05 19 2018 1 25 14 05 19 2 求當前時間及一小時後 select s...

oracle 日期加減計算

下一年 年加1 select sysdate,sysdate numtoyminterval 1,year from dual select sysdate,add months sysdate,12 from dual 上一年 年減1 select sysdate,sysdate numtoymi...