将两个日期值连接到一列

时间:2015-03-30 13:53:04

标签: oracle date oracle11g concatenation to-char

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

2 个答案:

答案 0 :(得分:1)

如果您的输出包含空格,则您的年份或月份列包含空格。要摆脱这些,您可以使用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来摆脱空间:

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

答案 1 :(得分:1)

问题在于,默认情况下,to_char会在正格式化数字前面留出一个空格,以便它们与负数排成一行。为防止这种情况发生,请使用to_char(month,'fm09')