在表REC_ALL_TRADES中,我将列作为CALCTM,其值为11:00:00 AM,其他值也为out am。 我想从值中删除AM。你能告诉我怎么做吗?
答案 0 :(得分:0)
如果CALCTM
列的数据类型是DATE
或TIMESTAMP
,则数据没有格式。 Oracle将DATE
数据类型存储为7-bytes(类似于TIMESTAMP
数据类型),直到将其传递给客户端程序(即SQL / Plus,SQL Developer,Toad, Java,Python等)客户端程序根据日期获取格式的规则对其进行格式化。
您可以使用DATE
为TIMESTAMP
和TO_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