0

如何在 Oracle 中转换以下时间戳:

2013 年 5 月 12 日上午 12:00:00

对此

2013 年 5 月 11 日 24:00:00

谢谢。

4

2 回答 2

1

更新了一个可能的解决方案

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演示

于 2013-06-24T06:03:00.077 回答
0

您无法使用标准的 Oracle 函数来实现这一点。Oracle 使用值 0 - 23,如果您需要显示像 24:00 这样的午夜,您必须编写自己的函数。

于 2013-06-24T06:16:15.120 回答