Oracle sql - 将字符串转换为日期

时间:2017-08-31 14:40:03

标签: sql oracle

我将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的错误:输入值不足以构成日期格式。

任何帮助将不胜感激。

2 个答案:

答案 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()