1

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

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
4

1 回答 1

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
于 2012-12-04T20:50:22.997 回答