将两个日期值合并到一列中

Contatenating two date values into one column

应该是个很简单的问题。我有两个字段 - 一个是一年字段,另一个是一个月字段。月份字段是一个整数,如果只有一个数字,例如 6 表示六月,则没有前导零。如果我现在将它们连接在一起,我想将这两个字段连接在一起以获得 201406 而不是 20146。我尝试了 year||to_char(month,'09'),但该字段显示为 2014 06,年份和月份之间有一个 space。有没有办法在没有 space 的情况下做到这一点?

如果您的输出包含 space,则您的年份或月份列包含 space。要摆脱这些,您可以使用 TRIM:

with v_data(year, month) as (
  select '2015 ', ' 1' from dual union all
  select ' 2014 ', ' 12 ' from dual union all
  select '2014', '3' from dual
)
select trim(year) || lpad(trim(month), 2, '0') 
from v_data

(假设您确实有两个字符串列 - 如果您确实有两个日期列,请在您的问题中添加示例输入)

更新

如果你想使用 to_char(),你应该使用 FM format modifier 来摆脱 space:

select trim(year) || trim(to_char(month, 'FM09')) 
from v_data

问题是,默认情况下,to_char 在正数前留下 space,以便它们与负数对齐。为防止这种情况,请使用 to_char(month,'fm09').