【问题标题】:Oracle to MySQL timestamp conversion in MySQL insert statementMySQL insert 语句中的 Oracle 到 MySQL 时间戳转换
【发布时间】:2016-11-02 16:25:12
【问题描述】:

我已经将 Oracle 11g 实例中的数据导出为插入语句。他们需要进入 MySQL 5.5 实例。 TIMESTAMP 转换有问题;我知道我可以在 MySQL 中将TO_TIMESTAMP 函数与INSERT 语句内联使用;但是,不确定要使用的正确标志。如下,按线性顺序,是:Oracle 时间戳语句和我对 MySQL 兼容语句的尝试。显然它不起作用(因为 MySQL 声明存在语法错误)。

甲骨文:

TO_TIMESTAMP('12/22/2015 5:08:59.245837 PM','fmMMfm/fmDDfm/YYYY fmHH12fm:MI:SS.FF AM')

MySQL:

TO_TIMESTAMP('12/22/2015 5:08:59.245837 PM','%m/%d/%Y %h:%i:%s')

除了微秒和 AM/PM 的标志之外,我还缺少什么?

【问题讨论】:

  • 我在 MySQL 5.5 文档中没有看到 TO_TIMESTAMP 函数。我想你想要像STR_TO_DATE 这样的东西。

标签: mysql oracle format timestamp database-migration


【解决方案1】:

假设您从 SQL Developer 导出。

在您导出整个数据之前,更改您的日期时间选择查询:

TO_CHAR(COLUMN_NAME, 'YYYY-MM-DD HH24:MI:SS') as XXX

它将生成 MySQL 格式的日期时间。所以当你得到插入查询时,你可以直接在 MySQL 上运行

【讨论】:

    【解决方案2】:

    对于 MYSQL: STR_TO_DATE('2/6/2015 5:20:43.000000 AM','%c/%d/%Y %l:%i:%s.%f %p')

    【讨论】:

      【解决方案3】:

      如果您希望 oracle 的日期和时间戳与 MySql 兼容,只需更改您的会话

      ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
      ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF'
      

      最好改变会话

      【讨论】:

        猜你喜欢
        • 2015-04-24
        • 2013-02-14
        • 1970-01-01
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多