求当前年第一天
select trunc(sysdate,'yyyy') from dual;
求当前月第一天
select trunc(sysdate,'mm') from dual;
求当前周第一天
select trunc(sysdate,'d') from dual;
求月天数
select to_char(last_day(sysdate),'dd') from dual;
求年天数
select trunc(add_months(sysdate,12),'yyyy')-trunc(sysdate,'yyyy') nts from dual;
求当前月所在季度
select to_char(sysdate,'q') from dual;
求当天是星期几
select to_char(sysdate,'dy') rq from dual;
求当前周是当月第几周
select to_char(sysdate,'w') rq from dual;
求当前周是今年第几周
select to_char(sysdate,'ww') rq from dual;
求当前季度第一天
select trunc(sysdate,'q') from dual;
列出当月所有日期
select trunc(sysdate,'mm') +rownum-1 from dual connect by rownum<=to_char(last_day(sysdate),'dd');
列出当年所有日期
select trunc(sysdate,'yyyy')+rownum-1 from dual connect by rownum<=365;
TO_DATE()函数中相关的参数说明:
Day: dd 两位数字格式,最大为31 dy 礼拜几的英文缩写格式,例如礼拜5缩写为fri day 礼拜几的英文格式,例如礼拜5就是friday ddspth spelled out, ordinal twelfth Month: mm 两位数字格式,最大为12 mon 英文月份的缩写格式,例如3月march缩写为mar month 英文月份的全拼形式,例如3月就是march Year: yy 两位数字格式,例如98表示1998年 yyyy 四位数字格式,例如1998表示1998年
Hour:
hh12 表示12小时计时
hh24 表示24小时计时
Minute:
mi 表示分钟
Second:
ss 表示秒数
TO_DATE()和TO_CHAR()函数使用
select to_char( to_date(222,'J'),'Jsp') from dual
显示Two Hundred Twenty-Two
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
也可以这样
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
所以,当时间需要精确的时候,觉得to_char还是必要的。