【问题标题】:Converting string to date in sql在sql中将字符串转换为日期
【发布时间】:2015-08-23 20:15:13
【问题描述】:

我需要将我的 sql 开发人员中的 varchar 格式的 2014-11-18T14:08:43+00:00 转换为日期格式,以便过滤一些条目。

我试过了

to_date(LAST_UPDATE_DATE,'YYYY-MM-DD')

但它给出了错误

ORA-01830: 日期格式图片在转换整个输入之前结束 字符串。

请帮助..

【问题讨论】:

  • 为什么你的日期列是 varchar?
  • 你运行的是什么版本的sql server?对我来说,它说 to_date 无法识别
  • SQL Server 返回 ORA 错误代码?很奇怪。
  • 您还需要时间还是只需要日期?
  • @Isha 你怎么会在sql server 中得到ORA 错误?

标签: sql oracle date type-conversion timestamp-with-timezone


【解决方案1】:

以防万一您不是要安装 sql server 而是需要使用 oracle(看到您正在使用 to_date 并且您遇到了 ora 异常) 我为您的日期格式添加了日期和时间戳(无毫秒)的快速日期时间转换:

SELECT to_Date(concat
               (substr
                (myvar,0,10),
                concat(' ',
                       substr(myvar,12,8)
                      )
               ),'YYYY-MM-DD HH24:mi:ss') AS mydate
FROM mytable

Fiddle

【讨论】:

    【解决方案2】:
    declare @varDate as nvarchar(50) = '2014-11-18T14:08:43+00:00'
    
    select CAST(substring(@varDate,0,CHARINDEX('T',@varDate)) as date)
    

    【讨论】:

    • sql server 语法如何适用于 Oracle 数据库?
    • @LalitKumarB 我想知道同样的事情,或者当标签是 sql server 时她是如何得到 ora 错误的,这真的很混乱
    • 之前被标记为sqlsql-server,后来被编辑了
    【解决方案3】:

    你可以这样使用它

    declare @Date as nvarchar(100) = '2014-11-18T14:08:43+00:00'
    SELECT CONVERT(DATE,@Date) AS Date
    

    或者去这个问题中接受的答案

    ORA-01830: date format picture ends before converting entire input string / Select sum where date query

    【讨论】:

    • @Isha 试试这个解决方案
    【解决方案4】:

    ORA-01830:日期格式图片在转换整个输入字符串之前结束。 to_date(LAST_UPDATE_DATE,'YYYY-MM-DD')

    2014-11-18T14:08:43+00:00TIMESTAMP 而不是 DATE

    首先,您应该永远不要DATE/TISTAMP存储为字符串。这是一个数据库设计缺陷。

    无论如何,您可以将其转换为 TIMESTAMP WITH TIMEZONE

    例如,

    SQL> SELECT to_timestamp_tz('2014-11-18T14:08:43+00:00',
      2                         'YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM')
      3                         AS tm_stamp
      4  FROM dual;
    
    TM_STAMP
    ----------------------------------------------------------------
    18-NOV-14 02.08.43.000000000 PM +00:00
    
    SQL>
    

    【讨论】:

    • @Isha ORA 错误证明你的数据库是Oracle 而不是sql server
    【解决方案5】:

    你可以试试这个;

    Select CAST ('2014-11-18T14:08:43+00:00' as date)
    

    假设您使用的是 SQL Server 2012

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 2013-07-12
      • 2018-03-03
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多