常用的时间格式掩码如下:掩码元素 含义YYYY 四位数年份 (如:2005) yearYY 二位数年份(如 05) Q 季度(1-4) MM 月份(01-12) monthWW 年的星期数(1-53),其中第一星期为年的第一天至第七天 W 月的星期数(1-5),其中第一星期为月的第一天至第七天 DDD 年的日(1-366) DD 月的日(1-31) D 周的日(1-7),其中周日为1,周六为7 dayHH24 24小时制(0-23) hourMI 分钟(0-59) minuteSS 秒(0-59) secondSSSSS 自午夜之后的秒(0-86399)两个很不错的函数,可以操作日期,也可以操作数值:round(日期,'指定的日期掩码') 返回日期时间的四舍五入结果指定的掩码不同则结果结果也不同 year 以 7月1日分界线 month 以16号为分界线 day 以中午12点为分界线 hh 以30分钟为分界线 mi 以30秒为分界线trunc(日期,'指定的日期掩码') 返回截断时间 year 本年度的1月1日 month 本月的1号 例子:(注意: day d dd 三者的区别)SQL> select round(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'year') from dual;ROUND(TO_DATE('2007051616:31:4------------------------------2007-1-1 SQL> select round(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'month') from dual;ROUND(TO_DATE('2007051616:31:4------------------------------2007-6-1 SQL> select round(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'mm') from dual;ROUND(TO_DATE('2007051616:31:4------------------------------2007-6-1 SQL> select round(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'day') from dual;ROUND(TO_DATE('2007051616:31:4------------------------------2007-5-20 SQL> select round(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'d') from dual;ROUND(TO_DATE('2007051616:31:4------------------------------2007-5-20 SQL> select round(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'dd') from dual;ROUND(TO_DATE('2007051616:31:4------------------------------2007-5-17SQL> select trunc(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'year') from dual;TRUNC(TO_DATE('2007051616:31:4------------------------------2007-1-1 SQL> select trunc(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'month') from dual;TRUNC(TO_DATE('2007051616:31:4------------------------------2007-5-1 SQL> select trunc(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'mm') from dual;TRUNC(TO_DATE('2007051616:31:4------------------------------2007-5-1 SQL> select trunc(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'day') from dual; TRUNC(TO_DATE('2007051616:31:4------------------------------2007-5-13 SQL> select trunc(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'d') from dual;TRUNC(TO_DATE('2007051616:31:4------------------------------2007-5-13 SQL> select trunc(to_date('20070516 16:31:46','yyyymmdd hh24:mi:ss'),'dd') from dual;TRUNC(TO_DATE('2007051616:31:4------------------------------2007-5-16日期时间函数: add_months(日期,number) 指定日期推迟number个月 last_day(日期) 指定日期当月的最后一天 new_time(日期,时区简写) 调整时区 next_day(日期,number) number表示周几,星期日是1,指定number的日期(一周内或一周后) months_between(日期1,日期2) 日期1和日期2之间有几个月 sysdate 系统当期那日期和时间
练习时的代码:select to_number(to_char(last_day(add_months(to_date('20040406','yyyymmdd'),-1))+1,'yyyymmdd')) from dual; TO_NUMBER(TO_CHAR(LAST_DAY(ADD------------------------------ 20040401 select to_number(to_char(last_day(to_date('20040406','yyyymmdd')),'yyyymmdd')) from dual;TO_NUMBER(TO_CHAR(LAST_DAY(ADD------------------------------ 20040430
create or replace procedure p_hkb_date_insert is /* 过程功能描述:日期插入表中 */v_days number(10);
v_date date; i number(10);begin
begin
--取得当月天数 select to_number(to_char(last_day(sysdate), 'dd')) into v_days from dual; --select sysdate from dual; 当前日期 --select last_day(sysdate) from dual; 月底日期 --select last_day(add_months(sysdate, -1)) from dual; 上月底日期 -- SELECT to_char(last_day(SYSDATE),'dd') days FROM dual; 当前月的天数 --select last_day(add_months(sysdate,-1))+1 from dual; 当前月第一天 --select to_number(to_char(sysdate,'yyyymmdd')) from dual;系统当前日期转换成如20070910格式: end; i := 1; begin select last_day(add_months(sysdate, -1)) into v_date from dual; while i <= v_days loop insert into hkb_date values (v_date + i, to_char(v_date + i, 'yyyymmdd'), to_number(to_char(v_date + i, 'yyyymmdd'))); --insert into hkb_date --(float_date) -- values --(to_char(v_date + i, 'yyyymmdd')); -- insert into hkb_date --(number_date) -- values --(to_number(to_char(v_date + i, 'yyyymmdd'))); i := i + 1; end loop; end;end p_hkb_date_insert;create table hkb_date_construct as select * from hkb_date where 1=2; 继承表字段create table hkb_date_data as select * from hkb_date; 继承表记录