gpt4 book ai didi

SQL:仅比较日期与月份和年份列

转载 作者:行者123 更新时间:2023-12-03 02:34:22 25 4
gpt4 key购买 nike

我有一个表MonthlyShipments,如下所示:

partnumber | quantity | month | year |
part1 | 12 | 6 | 2011 |
part1 | 22 | 5 | 2011 |
part1 | 32 | 4 | 2011 |
part1 | 42 | 3 | 2011 |
part1 | 52 | 2 | 2011 |

我想对过去 3 个月的数量进行求和,不包括当月。我的 where 子句目前如下所示:

where
MonthlyShipments.Month <> MONTH(GETDATE()) AND
CAST(
(CAST(MonthlyShipments.Month as nvarchar(2)) +
'-01-' +
CAST(MonthlyShipments.Year as nvarchar(4))) as DateTime)
> DATEADD(m, -4, GETDATE())

它确实有效,但它丑陋且具有侮辱性。有什么建议可以让它变得更漂亮吗?非常感谢!

最佳答案

也好不了多少...

DATEDIFF(
month,
DATEADD(Year, MonthlyShipments.Year-1900,
DATEADD(Month, MonthlyShipments.Month-1, 0)
),
GETDATE()
) BETWEEN 1 AND 3

但是,嵌套的 DATEADD 可以成为计算列和索引列

ALTER TABLE MonthlyShipments ADD
ShipDate AS DATEADD(Year, MonthlyShipments.Year-1900,
DATEADD(Month, MonthlyShipments.Month-1, 0)
)

这给出了

WHERE DATEDIFF(month, ShipDate, GETDATE()) BETWEEN 1 AND 3

关于SQL:仅比较日期与月份和年份列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6283703/

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