我将varchar(yyyymmdd)转换为日期(yyyymmdd)时出现问题。
我有一个带参数(pdate varchar2,yyyymmdd格式)的过程,它也需要转换为yyyymmdd格式的日期类型。 到目前为止我试过了。
vdate date;
vdate := (to_date(SUBSTR(pdate,1,4)+SUBSTR(pdate,5,2)+SUBSTR(pdate,7,2), 'yyyymmdd'));
这引发了ORA-01840的错误:输入值不足以构成日期格式。
任何帮助将不胜感激。
答案 0 :(得分:2)
只需使用to_date
select to_date(MyDate, 'yyyymmdd')
from mytable
测试:
select to_date('20170831','yyyymmdd')
from dual
另外,要在Oracle中连接,请使用双管||
select 'Chicken'||'Food'
from dual
答案 1 :(得分:1)
如果pdate在yyyymmdd之后有其他字符,并且yyyymmdd位于整个文本的开头,则可以使用
SELECT TO_DATE(SUBSTR(pdate,1,8), 'yyyymmdd')
FROM yourtable;
实施例
SELECT TO_DATE(SUBSTR('20170831 10:30am',1,8), 'yyyymmdd')
FROM dual;
否则,您可以按照大多数回复
的建议直接使用TO_DATE()