oracle做查询select to_date(start_date,'yyyy-mm-dd')+3 from t_way_lubr报错文字与格式字符串不匹配。

start_date为varchar()型,去掉'yyyy-mm-dd'可以执行,但是在存储过程中报错without format。

第1个回答  2012-05-14
这个问题是,

start_date 的格式问题,你的start_date 是 yyyy-mm-dd的格式吗,所有都是

比如 2012-05-01
2012-5-1
都是正确的

但是如果20120501 则肯定都是错误的

oracle里面的'yyyy-mm-dd'不区分大小写(反正用小写就对了)追问

我觉得问题也处在这里,start_date是varchar()型,格式是01-4月 -12,怎么才能转换成2012-4-1的格式的日期呢?

追答

'ddd-mon-yy'

本回答被提问者采纳
第2个回答  2012-05-14
select to_date(to_char(start_date,'yyyy-mm-dd'),'yyyy-mm-dd')+3 from t_way_lubr

如果还有问题,就是你的数据有问题
第3个回答  2012-05-14
可能是有的 start_date 不包含 天的信息
第4个回答  2012-05-14
yyyy-MM-dd , M要大写 ,追问

sorry,不对,oracle区分大小写吗?

追答

你要转换格式,日期格式中,小写m表示分(minutes),月要用大写M表示,不然就会出错。

追问

表示分的是mi,不是大小写的问题。