[code="java"]date(substr(char(v_rq),1,8)||'01')[/code]
DB2存储过程里有这么一句,啥意思呢,改成ORACLE怎么改呢?
之前你的sql
[code="sql"]date(substr(char(v_rq),1,8)||'01') [/code]
中是这样的
比如传入的参数为 v_rq 2009年11月23日(日期型)
char(v_rq)后为2009-11-23
substr(char(v_rq))为2009-11-
substr(char(v_rq)) || '01' 为2009-11-01
date(substr(char(v_rq),1,8)||'01') 为 2009年11月1日
我的sql
[code="sql"]
to_date(substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) || '01', 'yyyy-mm-dd')
[/code]
to_char(v_rq, 'yyyy-mm-dd')把日期转化为string才能进行substr操作
to_char(v_rq, 'yyyy-mm-dd')后为2009-11-23
substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) 为2009-11-
substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) || '01' 为2009-11-01
b[/b]
to_date(substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) || '01', 'yyyy-mm-dd') 为 2009年11月1日
将v_rq的第1-8位加上01,转换成date?
ps:没用过db2
oracle的substr用法如下:
[code="sql"]
SELECT SUBSTR('ABCDEFG',3,4) "Substring"
FROM DUAL;
CDEF
[/code]
to_date用法如下:
[code="sql"]
to_date('2009-11-23','yyyy-mm-dd')
[/code]
[code="sql"]to_date(substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) || '01'[/code], 'yyyy-mm-dd')
格式不好 重发一遍
[code="java"]to_date(substr(to_char(v_rq, 'yyyy-mm-dd'),1,8) || '01', 'yyyy-mm-dd')[/code]