oracle常見日期函數


--常用日期函數

1、Sysdate 當前日期和時間

Select sysdate from dual;

2、Add_months(d,n) 當前日期d后推n個月

用於從一個日期值增加或減少一些月份

當前日期后兩個月:

Select add_months(sysdate,2) from dual;

當前日期前三個月:

Select add_months(sysdate,-3) from dual;

ADD_MONTHS是運算函數,函數將一個日期上加上一指定的月份數,所以,日期中的日是不變的。然而,如果開始日期是某月的最后一天,那么,結果將會調整以使返回值仍對應新的一月的最后一天。如果,結果月份的天數比開始月份的天數少,那么,也會向回調整以適應有效日期。 

3、dbtimezone()返回時區

select dbtimezone from dual;

 

4,round[舍入到最接近的日期](day:舍入到最接近的星期日)

select sysdate S1,

round(sysdate) S2 ,

round(sysdate,'year') YEAR,

round(sysdate,'month') MONTH ,

round(sysdate,'day') DAY fromdual

 

5、next_day( date, weekday )指定日期的下一個日期

語法 : next_day( date,weekday )

select Next_day(to_date(20130107,'yyyymmdd'), 2) from dual ;

該函數功能很強大,但是需要注意,周日是1,周一是2,以此類推

 

6,trunc[截斷到最接近的日期,單位為天] ,返回的是日期類型

select sysdate S1,

trunc(sysdate) S2, --返回當前日期,無時分秒

trunc(sysdate, 'year') YEAR,--返回當前年的1月1日,無時分秒

trunc(sysdate, 'month')MONTH, --返回當前月的1日,無時分秒

trunc(sysdate, 'day') DAY --返回當前星期的星期天,無時分秒

from dual

7、last_day 一個月中的最后一天

select last_day(Trunc(SYSDATE, 'MONTH')) from dual

返回最后一天;

如果直接使用 selectlast_day(SYSDATE) from dual,不僅僅會返回日期,還會返回當前的時分秒等內容;

 

8、to_date,to_char日期和字符轉換函數用法

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; --日期轉化為字符串

select to_char(sysdate,'yyyy') as nowYear from dual; --獲取時間的年

select to_char(sysdate,'q') asnowSecond from dual; --獲取時間的季度

select to_char(sysdate,'mm') asnowMonth from dual; --獲取時間的月

select to_char(sysdate,'dd') asnowDay from dual; -獲取時間的日

select to_char(sysdate,'hh24') as nowHour from dual; --獲取時間的時

select to_char(sysdate,'mi') asnowMinute from dual; --獲取時間的分

select to_char(sysdate,'ss') asnowSecond from dual; --獲取時間的秒

將字符串轉換為日期類型

select to_date('2013-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual ;

 

9、months_between兩個日期之間的月份差

select months_between(to_date(201302,'yyyymm'),to_date(201212,'yyyymm'))as ans from dual;

--日期函數的一些具體用法

 

1、獲得上月的最后一天:

select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay fromdual;

 

2、上個月的今天(同日期)

select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;

 

3、上個月的第一天

select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') First_Day_Last_Month from dual;

SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH')First_Day_Last_Month FROM dual;

 

4、獲得日期對應的星期幾

select to_char(to_date('2013-04-07','yyyy-mm-dd'),'day') from dual;

 

5、從當前日期到某一個日期的天數

select floor(sysdate -to_date('20130405','yyyymmdd')) from dual;

 

6、找出今年的天數

selectadd_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual

看今年是366天,還是365天。

 

7、簡單的找出閏年

如果2月份的天數是28天,那么就不是閏年

select decode(to_char(last_day(to_date('200902','yyyymm') ),'dd'),'28','不是閏年','閏年' )from dual

 

8、當前日期是本年的第幾天

selectto_char(sysdate,'ddd'),sysdate from dual;

 

9、查找上月的第一天和最后一刻,本月的第一天和最后一刻

SELECT Trunc(Trunc(SYSDATE,'MONTH') - 1, 'MONTH') First_Day_Last_Month,

Trunc(SYSDATE, 'MONTH') - 1 /86400 Last_Day_Last_Month,

Trunc(SYSDATE, 'MONTH')First_Day_Cur_Month,

LAST_DAY(Trunc(SYSDATE,'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month

FROM dual;


免責聲明!

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



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