Oracle本周第一天本月第一天
本周第一天本月第一天
DECLARE
V_DATE_DAY VARCHAR2(50);
V_WEEK_BEGIN VARCHAR2(30);
V_WEEK_END VARCHAR2(30);
V_MONTH_BEGIN VARCHAR2(30);
V_MONTH_END VARCHAR2(30);
BEGIN
V_DATE_DAY := '2013-10-11';
SELECT TRUNC(TO_DATE(V_DATE_DAY, 'YYYY-MM-DD'), 'D') + 1
INTO V_WEEK_BEGIN
FROM DUAL;
SELECT TRUNC(TO_DATE(V_DATE_DAY, 'YYYY-MM-DD'), 'D') + 7
INTO V_WEEK_END
FROM DUAL;
SELECT TRUNC(TO_DATE(V_DATE_DAY, 'yyyy-mm-dd'), 'mm')
INTO V_MONTH_BEGIN
FROM DUAL;
SELECT TRUNC((LAST_DAY) (TO_DATE(V_DATE_DAY, 'yyyy-mm-dd')))
INTO V_MONTH_END
FROM DUAL;
DBMS_OUTPUT.PUT_LINE('BEGIN : ' || V_WEEK_BEGIN);
DBMS_OUTPUT.PUT_LINE('END : ' || V_WEEK_END);
DBMS_OUTPUT.PUT_LINE('BEGIN : ' || V_MONTH_BEGIN);
DBMS_OUTPUT.PUT_LINE('END : ' || V_MONTH_END);
END;
在存储过程使用参数时候,通过上语句插入数据时候V_WEEK_BEGIN实际值为:'07-10月-13',然后转化时候出现错误:ORA-01861: 文字与格式字符串不匹配
修改如下,进行标准时间格式转换。
SELECT TO_CHAR(TRUNC(TO_DATE(V_DATE_DAY,'yyyy-mm-dd'),'d') + 1,'yyyy-mm-dd') INTO V_WEEK_BEGIN FROM DUAL; SELECT TO_CHAR(TRUNC(TO_DATE(V_DATE_DAY,'yyyy-mm-dd'),'d') + 7,'yyyy-mm-dd') INTO V_WEEK_END FROM DUAL;

浙公网安备 33010602011771号