Sql 转换Oracle日期和时间

Sql 转换Oracle日期和时间,sql,oracle,timestamp,Sql,Oracle,Timestamp,如何在Oracle中转换以下时间戳: 12-MAY-2013 12:00:00 AM 2013年5月12日上午12:00:00 对此 11-MAY-2013 24: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

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

12-MAY-2013 12:00:00 AM 2013年5月12日上午12:00:00 对此

11-MAY-2013 24: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 | ------------------------ | 11-May-2013 24:00:00 |
下面是演示

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

我强烈怀疑任何试图回答的人都需要更多的上下文。首先,您已经给出了文本表示,而我希望实际存储有所不同。你想实现什么?我想找到一种转换Oracle日期和时间格式的方法。如果数据库中的初始存储使用以下格式“12-MAY-2013 12:00 AM”,如何转换SQL语句的输出,使格式变为“11-MAY-2013 24:00”?我可以使用TO_DATE函数来实现这一点吗?如果是这样的话,我可以使用什么样的屏蔽格式?这确实没有提供更多的上下文…您要求的是
2013年5月11日24:00:00
。您真的需要以这种方式输出吗,或者标准Oracle(0-23)
2013年5月12日00:00:00
可以吗?24:00:00是胡说八道。12:00:00 a.m.是24小时格式的00:00:00。这不会给出指定OP的输出。OP希望“5月12日开始的午夜”显示为“5月11日结束的24:00”@JonSkeet Fair。谢谢你指出。更新了答案。
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