mysql SQL中计算日期期限(年和月)的正确方法是什么?

enxuqcxy  于 2023-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(150)

我不是MySQL查询的Maven。我想根据这些日期生成任期(年和月)。

table

| 用户ID|聘用日期|离职日期|
| - -----|- -----|- -----|
| 1| 2017-10-02 2017-10-02| 2023-02-28 2023-02-28 2023-02-28|
| 2| 2009-01-10| 2015-01-04 2015-01-04|

预期产出

| 用户ID|任期|
| - -----|- -----|
| 1| 5年零4个月|
| 2| 5年零11个月|
我已经使用DATEDIFF创建了一个查询,并将天的结果转换为年和月,但我总是得到错误的结果。有人能帮我查询一下吗?谢谢

6mw9ycah

6mw9ycah1#

我们可以尝试以下方法,使用TIMESTAMPDIFF()沿着CASE表达式来处理月份的渲染:

SELECT
    USERID,
    CONCAT(TIMESTAMPDIFF(YEAR, date_hired, date_separated), ' Years',
           CASE WHEN TIMESTAMPDIFF(MONTH, date_hired, date_separated) % 12 > 0
                THEN CONCAT(' and ',
                            TIMESTAMPDIFF(MONTH, date_hired, date_separated) % 12,
                            ' months')
                ELSE '' END) AS TENURE
FROM yourTable
ORDER BY USERID;

Demo

相关问题