Oracle中从11:00:00到11:00:00的时间格式

时间:2017-11-08 09:29:08

标签: oracle

在表REC_ALL_TRADES中,我将列作为CALCTM,其值为11:00:00 AM,其他值也为out am。 我想从值中删除AM。你能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:0)

如果CALCTM列的数据类型是DATETIMESTAMP,则数据没有格式。 Oracle将DATE数据类型存储为7-bytes(类似于TIMESTAMP数据类型),直到将其传递给客户端程序(即SQL / Plus,SQL Developer,Toad, Java,Python等)客户端程序根据日期获取格式的规则对其进行格式化。

您可以使用DATETIMESTAMPTO_CHAR( datevalue, format_model, [nls_settings] )列添加格式,如下所示:

SELECT TO_CHAR( CALCTM, 'HH24:MI:SS' )
FROM   REC_ALL_TRADES

如果它存储为字符串,则将其转换为DATE,然后再转换为字符串:

SELECT TO_CHAR(
         TO_DATE( CALCTM, 'HH12:MI:SS AM' ),
         'HH24:MI:SS'
       )
FROM   REC_ALL_TRADES

如果您混合了有效/无效的格式化字符串,请使用CASE语句来区分:

SELECT CASE
       WHEN SUBSTR( TRIM( UPPER( CALCTM ) ), -1 ) IN ( 'AM', 'PM' )
       THEN TO_CHAR(
              TO_DATE( CALCTM, 'HH12:MI:SS AM' ),
              'HH24:MI:SS'
            )
       ELSE CALCTM
       END
FROM   REC_ALL_TRADES