【问题标题】:SQL Date conversion getting "Invalid Number"SQL日期转换得到“无效数字”
【发布时间】:2020-02-07 14:52:43
【问题描述】:

您好,我在 SQL ORCLE 中有以下日期

2020-02-07 13:21:56.478000

我希望它采用以下格式:

27-JAN-20 03.00.00.000000000 AM

我搜索了一下,发现了 to_char 和 to_date 并想出了这个

(TO_TIMESTAMP(TO_CHAR('2020-02-07 13:21:56.478000','DD-MON-YY HH:MI:SS.FF'))

但我不断收到“无效号码”,oracle 没有告诉我它在哪里。有什么想法吗?

【问题讨论】:

  • to_char 获取还不是字符串的内容,例如日期或数字,并将其转换为to char角色字符串. to_char 一个字符串是没有意义的。这就像在数字上使用to_number,或者在日期上使用to_date

标签: sql oracle date timestamp


【解决方案1】:

使用以下方法

to_char(
    timestamp '2020-02-07 13:21:56.478000',
    'DD-MON-YY HH:MI:SS.FF'
) 

【讨论】:

    【解决方案2】:

    问题是to_char() 需要一个类似日期的数据类型作为参数,而你却给它一个字符串。

    如果您正在处理文字字符串,则使用日期文字语法:

    to_char(
        timestamp '2020-02-07 13:21:56.478000',
        'DD-MON-YY HH:MI:SS.FF AM'
    ) 
    

    如果你正在处理一个字符串列,那么你可以先用to_timestamp()把它变成一个时间戳:

    to_char(
        to_timestamp(my_string_col, 'YYYY-MM-DD HH24:MI:SS.FF'),
        'DD-MON-YY HH:MI:SS.FF AM'
    )
    

    最后,如果你正在处理一个timestamp 列,那么你可以直接使用to_char()

    to_char(my_date_col, 'DD-MON-YY HH:MI:SS.FF AM')
    

    注意:您的原始格式修饰符缺少AM/PM 部分,我添加了它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 2015-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      相关资源
      最近更新 更多