--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 个数字表示的年