【问题标题】:character to date in oracle sqloracle sql中的字符到日期
【发布时间】:2015-06-27 04:16:46
【问题描述】:

以下 SQL 中的错误是什么:

select to_Date(substr('2/22/2015 9:20:06 AM',1,9),'mm/dd/yyyy','DD-MON-YY')  from dual

我收到以下错误:

ORA-12702: SQL 函数错误中使用了无效的 NLS 参数字符串

但是select substr('2/22/2015 9:20:06 AM',1,9) from dual 显示2/22/2015。我想将其转换为日期。

【问题讨论】:

    标签: sql oracle date-arithmetic


    【解决方案1】:

    to_Date(substr('2/22/2015 9:20:06 AM',1,9),'mm/dd/yyyy','DD-MON-YY')

    将查询分解成单独的部分,然后理解。

    substrto_date 是使用的两个函数。

    1. 提取所需的子字符串,substr('2/22/2015 9:20:06 AM',1,9)
    2. 在步骤 1 的输出上应用 TO_DATETO_DATE(substr('2/22/2015 9:20:06 AM',1,9),'mm/dd/yyyy')强>。
    3. 而且,就是这样。

    因此,在您发布的查询中,'DD-MON-YY' 格式掩码根本不需要。

    另外,你想要达到的效果相当于:

    TRUNC(TO_DATE('2/22/2015 9:20:06 AM', 'MM/DD/YYYY HH:MI:SS AM'))
    

    TRUNCDATE 类型中删除时间部分。

    或者,

    您可以使用 ANSI TIMESTAMP 文字:

    TRUNC(TIMESTAMP '2015-02-22 09:20:06')
    

    【讨论】:

      【解决方案2】:

      TO_DATE 方法中删除第三个参数:

      select to_date(substr('2/22/2015 9:20:06 AM',1,9),'mm/dd/yyyy') from dual
      

      这是nlsparam(见documentation)。

      【讨论】:

        猜你喜欢
        • 2013-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多