- Oracle從新手到高手
- 楊繼萍
- 917字
- 2019-12-09 14:49:07
5.3 日期函數
在默認情況下,日期數據的格式是DD-MON-YY。其中,DD表示兩位數字的日,MON表示3位數的月,YY表示兩位數字的年。在插入數據時,默認也采用DD-MON-YY格式插入數據。
5.3.1 日期函數概述
日期數據的格式由NLS_DATE_FORMAT系統參數來設置,該系統參數存儲在INIT.ORA和SPFILE.ORA文件中。可以使用SHOW PARAMETERS命令查看這些系統參數的值,另外還可以通過ALTER SYSTEM或ALTER SESSION命令修改該系統參數。ALTER SYSTEM命令表示修改系統參數的文件,這種修改設置在以后的數據庫操作中將一直起作用;在ALTER SESSION命令的設置只在當前的會話中起作用,該會話結束后,其設置就會失效。
在Oracle中,系統提供了許多用于處理日期和時間的函數,下表描述了常用的日期、時間函數的類型和功能。

5.3.2 計算日期
在Oracle系統中,DATE類似于NUMBER,也屬于一種數據類型,同樣擁有可以計算的功能。
1. 計算當前日期
Oracle中的SYSDATE()函數可以返回當前系統中的日期,例如下列代碼。

在使用SYSDATE函數返回當前日期時,需要注意該函數是根據行數來顯示當前日期值的,也就是說表中存在幾行數據便返回幾個日期值。
除了SYSDATE()函數之外,用戶還可以使用CURRENT_DATE()函數來顯示時區中的系統日期,以及使用SYSTIMESTAMP()函數來顯示數據類型格式的系統日期,其具體代碼如下。

2. 計算兩個日期之間的月數
在Oracle系統中,MONTHS_BETWEEN()函數可以返回兩個日期之間的月數,其結果值既可以是正數,也可以是負數。如果第一個參數指定的日期晚于第二個參數指定的日期,則結果值為負數,如下所示。

3. 計算指定月份的日期
用戶可以使用ADD_MONTHS()函數,在指定的日期中增減月份,以獲得間隔指定月后的日期。例如,下面的代碼中為指定的日期添加了6個月,其結果顯示6個月后的日期。

而下列代碼則將指定的日期減少了6個月,其結果顯示了6個月前的日期。

4. 顯示指定星期的日期
使用NEXT_DAY()函數,可以返回當前日期之后指定星期的具體日期,也就是說指定當前日期后的星期一至星期日的具體日期。
例如,已知具體日期,來指定具體日期后的第1個星期一的日期。首先,需要獲取已知日期,以便于對比計算結果。
SQL> select dte from tb; DTE -------------- 15-9月 -17 15-10月-17 15-11月-17 15-12月-17
然后,使用NEXT_DAY()函數計算已知日期后的星期一的具體日期。
SQL> select next_day(dte,2) "Monday" 2 from tb; Monday -------------- 18-9月 -17 16-10月-17 20-11月-17 18-12月-17
5. 顯示每個月的最后一天
使用LAST_DAY()函數,可以返回每個月最后一天的日期。下面代碼中顯示了指定日期所在月的最后一天。
SQL> select last_day(dte) "End Month" 2 from tb; End Month -------------- 30-9月 -17 31-10月-17 30-11月-17 31-12月-17
- JBoss Weld CDI for Java Platform
- Web應用系統開發實踐(C#)
- Python程序設計教程(第2版)
- JavaScript前端開發模塊化教程
- TypeScript Blueprints
- 程序員面試筆試寶典
- Cassandra Design Patterns(Second Edition)
- GitLab Repository Management
- Processing互動編程藝術
- MariaDB High Performance
- Essential Angular
- 零基礎學MQL:基于EA的自動化交易編程
- JavaScript by Example
- Visual C
- Java EE 8 Application Development