gpt4 book ai didi

sql - 为什么 DateAdd() 和 DATEDIFF() 给出不同的结果,哪个性能更好?

转载 作者:行者123 更新时间:2023-12-05 08:52:50 45 4
gpt4 key购买 nike

目前,我正在尝试以两种不同的方式运行我的 sql 查询。

WHERE order_date_time >= DateAdd(month,-3,getdate())

WHERE DATEDIFF(month,order_date_time,GetDate()) <= 3

1) 为什么我得到 2 个不同的结果?我不应该得到与我试图查找最近 3 个月或更短时间内的记录相同的值吗?

我在 where 子句中是否没有正确计算 3 个月的差异?

2) 哪个函数在性能方面更好并且返回结果更快?

最佳答案

DATEDIFF计算 2 个日期时间之间的“刻度”数。所以,例如 DATEDIFF(MONTH,'2019-01-31T23:59:59','2019-02-01T00:00:00')返回 1 ,即使只过去了 1 秒;月份已更改(因此出现一个“滴答声”)。

从什么是“更好”的角度来看,这取决于您的要求,但是,WHERE DATEDIFF(MONTH,order_date_time,GETDATE()) <= 3此处不可取,因为它不可 SARGable。这是因为 order_date_time包含在函数 DATEDIFF 中.

我会使用 WHERE order_date_time >= DATEADD(MONTH,-3,GETDATE()) (假设您想要 order_date_time 在过去 3 个月内的行)。

关于sql - 为什么 DateAdd() 和 DATEDIFF() 给出不同的结果,哪个性能更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55514655/

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