【问题标题】:Inserting timestamp into date field(Oracle)将时间戳插入日期字段(Oracle)
【发布时间】:2014-08-08 21:09:06
【问题描述】:

我们有带有日期字段(日期类型)的表,并且在日期字段中插入时间戳在我们的某些 oracle 环境(我们有多个开发环境)中有效,但在某些环境中失败。

我想知道为什么它在某些情况下有效,而在某些情况下它失败并出现 ORA-01843: not a valid month

例子

Table1
date1  DATE

以下sql在某些环境下工作,在某些环境下失败

Insert into Table1 (date1) values ( to_timestamp(sysdate))

Oracle 版本 - Oracle 数据库 11g

我们可以在日期字段中插入时间戳吗(如上)? oracle 是否支持在日期字段中插入时间戳值?

提前致谢。

【问题讨论】:

    标签: oracle date


    【解决方案1】:

    不要使用sysdate,而是使用current_timestamp(尽管它没有意义,因为无论如何它都会在数据库中变成date):

    insert into Table1 (date1) values (current_timestamp)
    

    我猜它失败的原因是to_timestamp 需要varchar 并且转换失败。

    【讨论】:

    • 我们可以在日期字段中插入时间戳吗? oracle 是否支持在日期字段中插入时间戳值?
    • 是的,它会变成date,因为它是隐式转换的。
    • 不确定为什么 to_timestamp(sysdate) 在我们的某些环境中工作,尽管 to_timestamp 需要 varchar,正如你提到的那样。
    • 我想它永远不会起作用,但也许其他人可以对此有所了解。
    • 在 10g SQL 参考手册docs.oracle.com/cd/B19306_01/server.102/b14200/… 上,他们确实有一个矩阵表明它可以做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 2017-04-21
    • 2012-01-23
    • 2012-02-28
    相关资源
    最近更新 更多