--sunfruit
總結了Oracle中關于日期函數的一些用法和技巧
上月末天:
SQL> select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from
2 dual
3 ;
LASTDAY
----------
2004-09-30
上月今天
SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual
2 ;
PRETODAY
----------
2004-09-29
上月首天
SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') FirstDay
2 from dual;
FIRSTDAY
----------
2004-09-01
以下轉貼:
Oracle
在日期使用上允許極大的靈活性。由于可以在日期字段存儲時間和日期,從而有函數可以既引用日期又引用時間。
Oracle 所提供的一些日期函數如下所示。
1. SYSDATE
返回當前的日期和時間。
示例
SELECT sysdate FROM dual;
SYSDATE
----------
05-3月 -03
2. ADD_MONTHS(d, no_of_month)
當前日期"m"后推"no_of_month" 個月。參數"no_of_month"可為任何整數。
示例
SELECT add_months(sysdate,2) FROM dual;
ADD_MONTHS
----------
05-5月 -03
SELECT add_months(sysdate,-2) FROM dual;
ADD_MONTHS
----------
05-1月 -03
3. LAST_DAY(month_day)
返回變量"month_day"中所指定月份的最后一天的日期。
示例
SELECT last_day(sysdate) FROM dual;
LAST_DAY(S
----------
31-3月 -03
4. MONTHS_BETWEEN(d1, d2)
返回日期 d1 和 d2 之間的月份數。如果 d1 晚于 d2,結果為正,否則返回負數。
示例
SELECT months_between(sysdate,to_date('20030101','YYYYMMDD')) FROM dual;
MONTHS_BETWEEN(SYSDATE,TO_DATE('20030101','YYYYMMDD'))
------------------------------------------------------
2.15773932
5. NEXT_DAY(d, day_of_week)
返回由"day_of_week"命名的,在變量"d"指定的日期之后的第一個工作日的日期。參數"day_of_week"必須為該星期中的某一天。
示例
-- 2003.3.2 是星期日
SELECT next_day(to_date('20030226','YYYYMMDD'),1) FROM dual;
NEXT_DAY(T
----------
02-3月 -03
日期格式
格式元素 說明
AD 或 A.D. 帶有或不帶有句號的 AD 標記
BC 或 B.C. 帶有或不帶有句號的 BC 標記
D 一周中的天 (1-7)
DAY 天的名稱 (Sunday - Saturday)
DD 一月中的天 (1 - 31)
DDD 一年中的天 (1 - 366)
DY 天的縮寫 (Sun - Sat)
HH 一天中的小時 (1 - 12)
HH24 一天中的小時 (0 - 23)
MI 分鐘 (0-59)
MM 月 (01-12)
MON 月名稱的縮寫
MONTH 月的名稱
SS 秒 (0-59)
YYYY 4 個數字表示的年