如何使用concat显示下个月,下个月的12月(12月)变成了13

问题描述 投票:0回答:1

我有一张这样的桌子。

员工_id 加入_年份 加入_月 加入日期时间 名字 姓氏
1 2011 03 2011-03-06 06:00:00 迈克 乔丹
2 2012 11 2012-11-19 07:00:00 约翰 辛普森
31 2019 12 2019-12-05 11:30:00 亚瑟

我需要使用连接几列来添加一列,然后 一个特殊要求是 join_month 要显示下个月。

例如, join_month 是 03(对于 Mike)+ 1(加 1 以获得下个月),因此结果应该是 04。 如果 join_month 是 11 + 1(下个月),那么结果应该是 12

预期结果应该是

1-20110401-Mike-Jordan
2-20121201-John-Simpson
31-20200101-Jane-Athur

所以以我有限的知识,我使用了以下方法

concat(employee_id,'-',join_year,join_month+1,'01','-',firstname,'-',lastname) as 'WWID' 

但是,我得到以下结果。

1-2011401-Mike-Jordan
2-20121201-John-Simpson
31-20191301-Jane-Athur

这里有 2 个问题。

第一期:第一行的 2 位数月份变为 1 位数(04 > 4)

第二期:201912(十二月)的下个月应该是 202001 年(一月)的下一年,但结果却是 201913..

有什么办法可以达到上述预期的效果吗?请帮忙。

谢谢你

mysql concatenation
1个回答
0
投票

当月份为 12 时,您需要处理特殊情况。月份数字会环绕到 1,并且年份必须递增。为此,您可以使用

IF
CASE

concat(employee_id,'-',
    IF(join_month = 12, join_year+1, join_year),
    IF(join_month = 12, 1, join_month+1),
    '01','-',firstname,'-',lastname) as 'WWID' 
© www.soinside.com 2019 - 2024. All rights reserved.