一、【Date TIMESTAMP 】--> 【CHAR】
SELECT
SYSDATE AS "Date型"
, SYSTIMESTAMP AS "TIMESTAMP型"
-- Date --> CHAR
, TO_CHAR(SYSDATE,'yyyy-mm-dd HH24:mi:ss') AS "SYSDATE-无毫秒"
-- TIMESTAMP --> CHAR
, TO_CHAR(SYSTIMESTAMP,'yyyy-mm-dd HH24:mi:ss') AS "SYSTIMESTAMP-无毫秒"
--默认6位
, TO_CHAR(SYSTIMESTAMP,'yyyy-mm-dd HH24:mi:ss.ff') AS "SYSTIMESTAMP-有毫秒"
--通过指定位数控制毫秒输出的位数
, TO_CHAR(SYSTIMESTAMP,'yyyy-mm-dd HH24:mi:ss.ff1') AS "SYSTIMESTAMP-有毫秒-1位"
--通过指定位数控制毫秒输出的位数
, TO_CHAR(SYSTIMESTAMP,'yyyy-mm-dd HH24:mi:ss.ff3') AS "SYSTIMESTAMP-有毫秒-3位"
FROM
dual;
结果:
二、【CHAR】-->【Date TIMESTAMP 】
SELECT
SYSDATE
, SYSTIMESTAMP
, TO_DATE('2022-10-13 12:11:32', 'yyyy-mm-dd hh24:mi:ss') AS "直转DATE型"
, CAST(TO_TIMESTAMP('2022-10-13 12:11:32', 'yyyy-mm-dd hh24:mi:ss.ff') as DATE) AS "转成DATE型-被转日期无毫秒"
, CAST(TO_TIMESTAMP('2022-10-13 12:11:32.123', 'yyyy-mm-dd hh24:mi:ss.ff') as DATE) AS "转成DATE型-被转日期有毫秒"
, TO_TIMESTAMP('2022-10-13 12:11:32.123', 'yyyy-mm-dd HH24:mi:ss.ff3') AS "转成TIMESTAMP型"
FROM
dual;
结果:
注意
当被转日期无法确认有无毫秒时,一定要先将日期转成TIMESTAMP型,再使用CAST函数,转成DATE型,否则就会出现【ORA-01830 】,日期转换的错误。
错误示范:
SELECT
TO_DATE('2022-10-13 12:11:32.123', 'yyyy-mm-dd hh24:mi:ss') AS "直转DATE型"
FROM
dual;
这种错误在实际开发中易出现,查询语句中明明将date型日期转成char型了,当将转后的char型日期,再转成date型的时候就出现这种错误,出现了毫秒(.000),就导致转换的时候出现上面的错误。