【问题标题】:Insert Python datetime to Oracle column of type DATE将 Python 日期时间插入 DATE 类型的 Oracle 列
【发布时间】:2014-06-30 00:12:18
【问题描述】:

我正在尝试将 python 日期时间对象存储到日期类型的 ORACLE 列。

到目前为止,我已经使用过,

rpt_time = time.strftime('%Y-%m-%d %H:%M:%S') or
rpt_time = str(datetime.datetime.now())

但所有人都给出 ORA-01843: not a valid montn

我真的很困惑如何插入 ORACLE 日期类型的 python 日期时间对象

【问题讨论】:

  • 请发布您的完整 Python 代码。

标签: python oracle date cx-oracle


【解决方案1】:

您需要导入日期时间库才能使用日期时间函数

from datetime import datetime

【讨论】:

    【解决方案2】:

    就我的搜索结果而言,ORACLE 可能对日期很挑剔,所以这可能是您需要做的。

    首先,检查您拥有的日期格式。例如,如果您有类似 2010/01/26:11:00:00AM 的内容,那么您可能希望在光标执行上执行以下操作:

    insert into x
    values(99, to_date('2010/01/26:11:00:00AM', 'yyyy/mm/dd:hh:mi:ssam'));
    

    【讨论】:

    • 是的,为to_date 提供明确的格式是插入日期的可靠方法。 ORM 做同样的事情,上次我检查过。
    【解决方案3】:

    您必须通过在会话中设置 nls_date_format 将日期从 python 转换为 oracle

    >>> rpt_time = time.strftime('%Y-%m-%d %H:%M:%S')
    >>> rpt_time
    '2014-05-12 21:06:40'
    

    然后在插入oracle之前,执行以下操作

    cursor.execute("ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'")
    

    【讨论】:

      【解决方案4】:

      cx_Oracle 支持传递datetime.datetime 类的对象。因此,当您已经拥有此类的对象时(例如在调用datetime.datetime.now() 时),您不应尝试对其进行格式化并作为字符串传递,而应直接传递它。这样可以防止由于日期和/或时间格式错误而导致的所有错误。

      例子:

      cursor.execute("INSERT INTO SomeTable VALUES(:now)", {'now': datetime.datetime.now()})
      

      请注意,如果您想防止秒的小数部分被截断,您必须采取额外的步骤。详情请阅读 Przemysław Piotrowski 的 Mastering Oracle+Python, Part 2: Working with Times and Dates 文章。

      【讨论】:

      • 非常感谢朋友!你救了我。浪费了 2 个小时试图解决这个问题!
      【解决方案5】:

      python 中的 datetime.now() 为您提供毫秒数,必须在成功写入 Oracle 之前摆脱它。

      from datetime import datetime
      ....
      cursor.execute("INSERT INTO myTable VALUES(to_date('" + str(datetime.now().replace(microsecond=0)) + "','yyyy-mm-dd hh24:mi:ss'))")
      ....

      【讨论】:

        猜你喜欢
        • 2017-04-21
        • 2015-08-13
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多