Oracel日期函数

一、TO_CHAR(x[,formate])和TO_DATE(x[,formate])函数
    日期和字符串互换函数
sql 代码
 
  1. DECLARE  
  2.     V_DATE VARCHAR2(50);  
  3. BEGIN  
  4.     DBMS_OUTPUT.put_line(TO_CHAR(SYSDATE));     
  5.     DBMS_OUTPUT.put_line(TO_CHAR(SYSDATE,'MM-DD-YYYY'));  
  6.     V_DATE := TO_CHAR(SYSDATE,'MM-DD-YYYY');  
  7.     DBMS_OUTPUT.put_line(TO_CHAR(TO_DATE(V_DATE,'MM-DD-YYYY')));  
  8.     DBMS_OUTPUT.put_line(TO_CHAR(TO_DATE(V_DATE,'MM-DD-YYYY'),'YYYY/MM/DD'));  
  9. EXCEPTION  
  10.     WHEN OTHERS THEN  
  11.         DBMS_OUTPUT.put_line('AN EXCEPTION OCCURRED');  
  12.         ROLLBACK;  
  13. END;  
两个函数的用法都很简单,以下几点值得注意:
    1、x参数的类型,将日期转成字符型x就为DATE类型,反过来x就为VARCHAR2类型;
    2、使用TO_DATE时注意x参数和formate参数的匹配问题,如:'08-31-2007'是不能转成'YYYY-MM-DD'形式的,因为数据库存储时间的格式是固定的几种形式,因此我们需要按照x参数的顺序,定义formate(或者就使用默认值),TO_DATE仅仅只是从类型上转化而已。
二、时间格式化参数
三、时间值函数
sql 代码
 
  1. DECLARE  
  2.     V_DATE VARCHAR2(50) := SYSDATE;  
  3. BEGIN  
  4.     --返回当前系统时间三个月以后的时间   
  5.     DBMS_OUTPUT.put_line(ADD_MONTHS(V_DATE,3));  
  6.     --返回当前系统时间三个月以前的时间   
  7.     DBMS_OUTPUT.put_line(ADD_MONTHS(V_DATE,-3));  
  8.     --返回当前系统时间当月的最后一天   
  9.     DBMS_OUTPUT.put_line(LAST_DAY(V_DATE));  
  10.       
  11.     --PARAM1晚于PARAM2,则返回正数 ,否则返回负数 ,用ROUND取整数   
  12.     DBMS_OUTPUT.put_line(ROUND(MONTHS_BETWEEN(V_DATE,'2007-05-30')));  
  13.     DBMS_OUTPUT.put_line(ROUND(MONTHS_BETWEEN('2007-05-30',V_DATE)));  
  14.     --返回当前系统时间的下个星期几 这里的PARAM2为星期,如:MONDAY,Tuesday等。  
  15.     --但在中文环境下,要写成’星期x’这样的格式  
  16.     DBMS_OUTPUT.put_line(NEXT_DAY(SYSDATE,'星期五'));  
  17.     --ROUND和TRUNC和处理数字的函数性质一样,只不过参数换成DATE而已。具体可以参考数字函数章节   
  18.     --PARAM2参数是日期格式化参数   
  19.     DBMS_OUTPUT.put_line(ROUND(SYSDATE,'MM'));  
  20.     DBMS_OUTPUT.put_line(TRUNC(SYSDATE));  
  21.       
  22. EXCEPTION  
  23.     WHEN OTHERS THEN  
  24.         DBMS_OUTPUT.put_line('AN EXCEPTION OCCURRED');  
  25.         ROLLBACK;  
  26. END;  

四、时区

你可能感兴趣的:(sql)