【发布时间】:2021-06-22 11:16:51
【问题描述】:
我正在尝试计算一段时间内的库存天数。我在获取上个月库存的实际天数时遇到问题。所以对于第一行,9天是正确的。但是第二行应该显示 34。因为我想计算 Inv_date 和“今天的”日期之间的天数。假设我在写这篇文章时,今天的日期是“2021-03-25”。
所以我有一个表格,例如:
| Transdate | Inv_Date | Purch_Date | InvDays |
|---|---|---|---|
| 2021-02-01 00:00:00.000 | 20210219 | Null | 9 |
| 2021-03-01 00:00:00.000 | 20210219 | Null | 40 |
我期待的是:
| Transdate | Inv_Date | Purch_Date | InvDays |
|---|---|---|---|
| 2021-02-01 00:00:00.000 | 20210219 | Null | 9 |
| 2021-03-01 00:00:00.000 | 20210219 | Null | 34 |
我用于 InvdDays 计算的 Sql 脚本是:
case when left(Getdate(),8) >= left(convert(varchar,Transdate,112),8) then
datediff(day,Inv_date,
dateadd(day,-1,dateadd(month,1,Transdate))
)
else
isnull(ABS(DATEDIFF(day, Inv_date, isnull(Purch_Date, Getdate()))),0) end as InvDaysStandQty
【问题讨论】:
-
请解释逻辑。
标签: sql sql-server datediff