当前位置: 首页 > 知识库问答 >
问题:

如何解决SQL错误:ORA-01843:不是有效月份

闻法
2023-03-14
UPDATE Table1
SET CHANGE_DELIVERY_REASON    = 'Card Activation',
CHANGE_DELIVERY_NOTE        = 'ACTIVATION SUCCESS [1 OK - 2 OK]',
RECONCILIATION_STATUS       = 1 ,
RECONCILIATION_LAST_UPDATED = '23/4/2018 12:00:00 AM',
RECONCILIATION_COUNT        = '6',
ACTIVATION_FAILURE          = 'SUCCESS';

“SQL错误:ORA-01843:无效月份”

我不知道我的查询有什么问题。

updateQuery = " UPDATE " + clsUtility.GetMasterTable() + " SET ";
updateQuery += "   CHANGE_DELIVERY_REASON = 'Card Activation', ";
updateQuery += "   CHANGE_DELIVERY_NOTE = '" + notes + "', ";
updateQuery += "   RECONCILIATION_STATUS = 1 , ";
updateQuery += "   RECONCILIATION_LAST_UPDATED = '" + DateTime.Today + "', ";
updateQuery += "   RECONCILIATION_COUNT = '" + reconciliation_count + "',";
updateQuery += "   ACTIVATION_FAILURE = '" + resultPart + "', ";

共有1个答案

傅志用
2023-03-14

你的问题是你给出的日期的格式,这在其他答案中已经处理过了。您将需要其他日期字段,所以一定要看看它。

但是,对于这种特殊情况,您可以简单地停止使用本地日期,让数据库完成以下工作:

RECONCILIATION_LAST_UPDATED = trunc(sysdate)

另外,请在查询中使用参数绑定。您很容易受到SQL注入攻击。

using (var connection = new SqlConnection())
{
    using (var command = connection.CreateCommand())
    {
        command.CommandText = "UPDATE " + clsUtility.GetMasterTable() + " SET RECONCILIATION_LAST_UPDATED = :last_updated, CHANGE_DELIVERY_NOTE = :delivery_note";

        var parameterLastUpdated = command.CreateParameter();

        parameterLastUpdated.ParameterName = ":last_updated";
        parameterLastUpdated.SqlDbType = SqlDbType.DateTime;
        parameterLastUpdated.Direction = ParameterDirection.Input;
        parameterLastUpdated.Value = DateTime.Today;

        command.Parameters.Add(parameterLastUpdated);

        var parameterDelivery = command.CreateParameter();

        parameterDelivery.ParameterName = ":delivery_note";
        parameterDelivery.SqlDbType = SqlDbType.NVarChar;
        parameterDelivery.Direction = ParameterDirection.Input;
        parameterDelivery.Value = "Some string you want in notes";

        command.Parameters.Add(parameterDelivery);

        command.ExecuteNonQuery();
    }
}
 类似资料:
  • 我使用以下查询创建了一个表 现在,当我尝试使用SQL错误:ORA-01843:not a valid month。 我做错了什么?

  • 请帮忙。我在这里犯了一个小错误,但即使看了前面的问题,我也找不到它。 查询运行时没有错误,但是当我从结果中选择所有数据时(通过执行Ctrl+a),我得到ORA-1843:不是一个有效的月份。 谢谢你。 此外,我被错误的数据模型所困扰。此日期字段的值如“0--”,月份值大于12,最后天大于31。现在我想在选择期间忽略这些记录。我创建的存储过程不能正常工作,请提供帮助。谢了。

  • 我为PHP更改了OCI8版本,由于该查询不起作用: 我收到这个消息: 消息:oci_execute():ora-01843:不是有效月份 它与Toad一起用于Oracle11。你有什么解决办法吗? 谢谢:)

  • 在浏览结构和XML时,我注意到我的日期是字符串格式的: 元素name=“datetime”value=“datetime”label=“datetime”datatype=“xsd:string”breakorder=“ascending”fieldorder=“3” 所以我删除了to_char以获得日期格式 如何解决此问题? 编辑:列的格式,时间戳,格式是CHAR(14)值的例子是2020070

  • 我在Oracle DB中有一个列,它是数据类型。存储在此列中的典型值类似于。我试图得到所有的记录,其中该专栏有记录后2015年8月1日。 但是,我得到的是。我哪里做错了?