将两个日期值合并到一列中
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')
.
应该是个很简单的问题。我有两个字段 - 一个是一年字段,另一个是一个月字段。月份字段是一个整数,如果只有一个数字,例如 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')
.