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