Oracle各種日期計算方法

來源:互聯網
上載者:User

一個月的第一天

 

 

SELECT to_date(to_char(SYSDATE,'yyyy-mm')||'-01','yyyy-mm-dd')FROM dual

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_char(trunc(add_months(last_day(sysdate), -1) + 1), 'yyyy-mm-dd') 

本月最後一天

 

select to_char(last_day(sysdate), 'yyyy-mm-dd')

一年的第一天

 

 

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/60
FROM 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 next_day(to_date(to_char(SYSDATE,'yyyy-mm')||'-01','yyyy-mm-dd'),        '星期一'        )FROM dualnext_day 為計算從指定日期開始的第一個符合要求的日期,這裡的'星期一'將根據NLS_DATE_LANGUAGE的設定稍有不同。

 

去掉時分秒

select trunc(sysdate) 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本文來自CSDN部落格,轉載請標明出處:file:///E:/知識積累/oracle/程式開發%20Oracle各種日期計算方法(收藏)%20-%20fish2008的專欄%20-%20CSDN部落格.mht

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.