如何在 Oracle 中转换以下时间戳:
2013 年 5 月 12 日上午 12:00:00
对此
2013 年 5 月 11 日 24:00:00
谢谢。
更新了一个可能的解决方案
SELECT CASE WHEN dt - TRUNC(dt) = 0
THEN TO_CHAR(TRUNC(dt) - 1, 'DD-Mon-YYYY') || ' 24:00:00'
ELSE TO_CHAR(dt, 'DD-Mon-YYYY HH24:MI:SS')
END dt
FROM
(
SELECT TO_DATE('12-MAY-2013 12:00:00 AM', 'DD-Mon-YYYY HH:MI:SS AM') dt
FROM dual
)
输出:
| DT | ---------------------- | 2013 年 5 月 11 日 24:00:00 |
这是SQLFiddle演示
原答案试试
SELECT TO_CHAR(TO_DATE('12-MAY-2013 12:00:00 AM', 'DD-Mon-YYYY HH:MI:SS AM'), 'DD-Mon-YYYY HH24:MI:SS') dt
FROM dual
这是SQLFiddle演示
您无法使用标准的 Oracle 函数来实现这一点。Oracle 使用值 0 - 23,如果您需要显示像 24:00 这样的午夜,您必须编写自己的函数。