【问题标题】:Oracle time stamp in YYYYmmddHHMMSS format [closed]YYYYmmddHHMMSS 格式的 Oracle 时间戳 [关闭]
【发布时间】:2015-04-15 11:21:59
【问题描述】:

我在 oracle db 中有以下格式的时间戳 (6/23/2017 12:00:00.000000 AM)。

我需要将其转换为YYYYmmddHHMMSS 格式。 我尝试使用

进行转换
`to_char(time,"YYYYmmddHHMMSS")`

但它就像20170623120600 一样给予。而不是分钟,而是几个月。

请提出建议。

【问题讨论】:

    标签: sql oracle11g


    【解决方案1】:

    你应该给MI 几分钟。所以你的转化会是这样的

    to_char(time,'YYYYmmddHHMISS')`
    

    【讨论】:

      【解决方案2】:

      你必须使用MI而不是mm来提及分钟,oracle doc是你的朋友

      【讨论】:

        【解决方案3】:

        您需要先将字符串转换为时间戳,然后再将其转换为您各自的格式。
        您可以尝试如下:

        Select  
              To_Char(  
                     To_TimeStamp('6/23/2017 12:00:00.000000 AM', 'MM/DD/YYYY HH:MI:SS.FF AM'),  
              'YYYYmmddHHMISS')  
        from dual;
        

        【讨论】:

        • 它似乎存储为时间戳列,而不是字符串,因此不需要额外的转换,或者总是安全的。默认情况下,它只是与会话的 NLS_TIMESTAMP_FORMAT 一起显示。
        【解决方案4】:

        我在 oracle db 中有以下格式的时间戳

        不,日期时间存储在数据库中时没有格式。您看到的格式仅供展示。

        它给出的是几个月,而不是分钟。

        很明显,因为您使用了MM 而不是MI

        • MM 为您提供月份编号
        • MI 为您提供时间部分中的分钟数

        所以,使用:

        to_char(time,YYYYMMDDHHMISS)
        

        例如,

        SQL> SELECT to_char(SYSDATE,'YYYYMMDDHHMISS') FROM dual;
        
        TO_CHAR(SYSDAT
        --------------
        20150415050759
        
        SQL>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-14
          • 1970-01-01
          • 1970-01-01
          • 2013-01-11
          • 2010-12-31
          • 1970-01-01
          • 2020-01-06
          • 1970-01-01
          相关资源
          最近更新 更多