下面的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
答案 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