gpt4 book ai didi

sql - 如何获取sql server 2005中两个日期之间的月份数

转载 作者:行者123 更新时间:2023-12-02 21:59:42 25 4
gpt4 key购买 nike

我的 sql server 2005 表中有一个列应该保存员工的工作月数。

由于我还知道员工的工作日期,因此我希望“months_In_Service”列成为计算列。

现在如果我使用DATEDIFF(month,[DateEngaged],GETDATE())作为服务月份计算列的公式,结果有时是正确的,有时是错误的。

获取 DateEngged 值与当前日期之间的月数的更可靠方法是什么?我应该在计算列中使用哪个公式?

最佳答案

类似于(可能需要交换 1 和 0,未经测试)

datediff(month,[DateEngaged],getdate()) +
CASE WHEN DATEPART(day, [DateEngaged]) < DATEPART(day, getdate()) THEN 1 ELSE 0 END

DATEDIFF 测量月份边界,例如每月 1 日的 00:00 时间,而不是每月的周年纪念日

编辑:看到OP的评论后,如果开始日>结束日,则必须减去1

DATEDIFF (month, DateEngaged, getdate()) -
CASE
WHEN DATEPART(day, DateEngaged) > DATEPART(day, getdate()) THEN 1 ELSE 0
END

因此,对于 12 月 20 日至 1 月 13 日,DATEDIFF 给出 1,然后 20 > 13,因此减去 1 = 零个月。

关于sql - 如何获取sql server 2005中两个日期之间的月份数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2054975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com