Oracle Date TO_CHAR('Month DD,YYYY')中有额外的空格

con*_*att 23 sql oracle oracle10g

当我做...

Select TO_CHAR (date_field, 'Month DD, YYYY')
from...
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

July      01, 2011
April     01, 2011
January   01, 2011
Run Code Online (Sandbox Code Playgroud)

为什么我的月和日之间有额外的空格?为什么不把它们放在一起呢?

Nul*_*ion 68

为什么我的月和日之间有额外的空格?为什么不把它们放在一起呢?

所以你的输出将是对齐的.

如果您不想填充,请使用格式修饰符FM:

SELECT TO_CHAR (date_field, 'fmMonth DD, YYYY') 
  FROM ...;
Run Code Online (Sandbox Code Playgroud)

参考:格式模型修饰符


Ben*_*Ben 8

如果你在to_char中使用'Month',它右边填充到9个字符; 你必须使用缩写'MON'或to_char然后修剪并连接它以避免这种情况.请参见http://www.techonthenet.com/oracle/functions/to_char.php

select trim(to_char(date_field, 'month')) || ' ' || to_char(date_field,'dd, yyyy')
  from ...
Run Code Online (Sandbox Code Playgroud)

要么

select to_char(date_field,'mon dd, yyyy')
  from ...  
Run Code Online (Sandbox Code Playgroud)

  • @Ben - 这并不荒谬,它只是从默认情况下确定柱状数据以固定宽度出来的时间开始,因为它被写入依赖于该行为的报告.NullUserException建议使用'fm'修饰符是向Oracle指示您不需要默认空白填充行为的正确方法. (5认同)

Rat*_*ake 6

您应该使用fm元素删除空格.

SELECT TO_CHAR(sysdate, 'fmDAY DD "de" MONTH "de" YYYY') CURRENT_DATE
FROM   dual;
Run Code Online (Sandbox Code Playgroud)