日期函数 
  35.系统时间 
  S:select getdate() value 
  O:select sysdate value from dual   36.前后几日 
  直接与整数相加减   37.求日期 
  S:select convert(char(10),getdate(),20) value 
  O:select trunc(sysdate) value from dual 
  select to_char(sysdate,'yyyy-mm-dd') value from dual   38.求时间 
  S:select convert(char(8),getdate(),108) value 
  O:select to_char(sysdate,'hh24:mm:ss') value from dual 39.取日期时间的其他部分 
  S:DATEPART 和 DATENAME 函数 (第一个参数决定) 
  O:to_char函数 第二个参数决定   参数---------------------------------下表需要补充 
  year yy, yyyy 
  quarter qq, q (季度) 
  month mm, m (m O无效) 
  dayofyear dy, y (O表星期) 
  day dd, d (d O无效) 
  week wk, ww (wk O无效) 
  weekday dw (O不清楚) 
  Hour hh,hh12,hh24 (hh12,hh24 S无效) 
  minute mi, n (n O无效) 
  second ss, s (s O无效) 
  millisecond ms (O无效) 
  ----------------------------------------------   40.当月最后一天 
  S:不知道 
  O:select LAST_DAY(sysdate) value from dual   41.本星期的某一天(比如星期日) 
  S:不知道 
  O:SELECT Next_day(sysdate,7) vaule FROM DUAL;   42.字符串转时间 
  S:可以直接转或者select cast('2004-09-08'as datetime) value 
  O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;   43.求两日期某一部分的差(比如秒) 
  S:select datediff(ss,getdate(),getdate()+12.3) value 
  O:直接用两个日期相减(比如d1-d2=12.3) 
  SELECT (d1-d2)*24*60*60 vaule FROM DUAL;   44.根据差值求新的日期(比如分钟) 
  S:select dateadd(mi,8,getdate()) value 
  O:SELECT sysdate+8/60/24 vaule FROM DUAL;   45.求不同时区时间 
  S:不知道 
  O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;

解决方案 »

  1.   

    insert table values (TO_DATE(‘2001-08-01’,’YYYY-MM-DD’),………………
      

  2.   

    如果不能确定时间格式的话,建议用to_date('日期表达式','时间掩码')转换成时间格式如
    to_date('2005-04-19','yyyy-mm-dd')
      

  3.   

    --example:
    --OUTPUT
    SQL> create or replace function fun_test
      2  return date
      3  as
      4         is_date           date    ;
      5  begin
      6          is_date := sysdate ;
      7          return is_date;
      8   
      9   end;
     10  /函數已被建立目前歷時: 00:00:00.47
    SQL> SELECT fun_test FROM DUAL;FUN_TEST
    -------------------
    2005/04/19 13:41:04目前歷時: 00:00:00.15---INPUT
    SQL> create or replace procedure pro_test
      2        (
      3         var_begin         in date ,
      4         var_end           in date  
      5        )
      6  as
      7         is_dates          number(10);
      8  begin
      9         is_dates := var_end -  var_begin ;
     10          dbms_output.put_line('The days of begin and end is : '||to_char(is_dates));
     11   end;
     12  /程序已被建立目前歷時: 00:00:00.31
    SQL> exec pro_test(to_date('2005/01/01','yyyy/mm/dd'),to_date('2005/01/10','yyyy/mm/dd'));
    The days of begin and end is : 9PL/SQL 程序順利完成目前歷時: 00:00:00.16
      

  4.   

    日期和時間函數匯總
    http://www.cnoug.org/viewthread.php?tid=28366