使用Oracle中的“FMMonth”格式化日期并正确显示时间的问题

时间:2012-12-04 20:35:29

标签: sql oracle date datetime

下面的sql使用dual重现了这个问题:

SELECT TRUNC (SYSDATE) example,
          TO_CHAR (TRUNC (SYSDATE), 'FMMonth dd, yyyy')
       || ' '
       || TO_CHAR (TRUNC (SYSDATE), 'hh:MI AM') result_one,
       TO_CHAR (TRUNC (SYSDATE), 'FMMonth dd, yyyy hh:MI AM') result_two
  FROM DUAL

输出:

EXAMPLE     RESULT_ONE                  RESULT_TWO
12/4/2012   December 4, 2012 12:00 AM   December 4, 2012 12:0 AM

请注意RESULT_TWO输出在时间的分钟值中缺少零,而RESULT_ONE则没有。 RESULT_ONE是我当前的解决方法,附加两个单独的格式说明。该问题发生在分钟包含零的任何时间值(例如,上午11:02)。

有关如何在不使用TO_CHAR解决方法的情况下执行RESULT_ONE的任何建议?

Oracle版本信息

> BANNER Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 -
> 64bi PL/SQL Release 10.2.0.4.0 - Production CORE  10.2.0.4.0  Production
> TNS for Solaris: Version 10.2.0.4.0 - Production NLSRTL Version
> 10.2.0.4.0 - Production

1 个答案:

答案 0 :(得分:2)

您可以将fm修饰符应用于多种格式蒙版

SQL> ed
Wrote file afiedt.buf

  1  SELECT TO_CHAR (TRUNC (SYSDATE), 'FMMonth dd, yyyy fmhh:MI AM') result_two
  2*   FROM DUAL
SQL> /

RESULT_TWO
------------------------------------------------------
December 4, 2012 12:00 AM