为啥将日期时间转换为字符串让我出错:ORA-01843: not a valid month
Posted
技术标签:
【中文标题】为啥将日期时间转换为字符串让我出错:ORA-01843: not a valid month【英文标题】:Why converting datetime to string gets me the error : ORA-01843: not a valid month为什么将日期时间转换为字符串让我出错:ORA-01843: not a valid month 【发布时间】:2013-05-05 02:46:52 【问题描述】:我有以下列:
CheckingTime
------------
1 7/5/2011
2
3
4 5/8/2012
(列格式为日期。) 我正在使用数据读取器读取 DB1 中的所有列和行,并将它们插入 DB 2,如下所示:
while (dr.Read())
string finalratingdate = ((dr[19] != DBNull.Value) ? Convert.ToString(dr[19]) : "");
所以在插入时应该检查是否有DBNull,如果没有,则插入值,如果是则插入“”,但问题是我收到以下错误:
System.Data.OracleClient.OracleException: ORA-01843: 无效月份
我只使用 datetimes 变量得到这个错误。我能够将所有其他变量转换为字符串并插入它们。
你有什么想法吗?
谢谢
【问题讨论】:
【参考方案1】:我相信异常表明您在数据库中的列是Date
类型,它不能容纳空字符串。您应该使用null
初始化变量,而不是在您的语句中使用空字符串,这将使您能够在Date
列中设置空值。所以你的陈述是:
string finalratingdate = ((dr[19] != DBNull.Value) ? Convert.ToString(dr[19]) : null);
我不确定为什么要将DateTime
字段转换为数据库字符串,您应该使用参数化查询并将DataTime
对象作为参数添加,而不是将其转换为字符串。
【讨论】:
感谢您的回复。我尝试了您的建议,但仍然收到相同的错误: System.Data.OracleClient.OracleException: ORA-01843: not a valid month 我正在将日期时间转换为字符串,因为我在十进制列中遇到 DBNulls 问题和将值转换为字符串更正了问题。现在我用 datetime colomns 尝试了同样的方法,但没有成功以上是关于为啥将日期时间转换为字符串让我出错:ORA-01843: not a valid month的主要内容,如果未能解决你的问题,请参考以下文章
json中的String类型的日期为啥自动转换成date类型
为啥 datetime.strptime 将日期输出为序列化? [复制]