SQL 带括号的日期查询的区别
Difference in SQL Date Query with Parenthesis
我继承了一个多机器学习过程,除了括号外,它们使用基本相同的日期查询。以下 3 个日期查询给出了不同的行数。每个日期查询为每个日期查询提供不同数量的行之间到底有什么区别?
1)
WHERE
((dbo.FACTINVOICEHEADER.PAID_DATE >= '2019-02-01'
AND dbo.FACTINVOICEHEADER.PAID_DATE <= '2020-01-31')
OR (dbo.FACTINVOICEHEADER.PAID_DATE >= '2018-02-01'
AND dbo.FACTINVOICEHEADER.PAID_DATE <= '2019-01-31'))
2)
WHERE
((dbo.FACTINVOICEHEADER.PAID_DATE >= '2018-02-01'
AND dbo.FACTINVOICEHEADER.PAID_DATE <='2020-01-31'))
3)
WHERE
dbo.FACTINVOICEHEADER.PAID_DATE >= '2018-02-01'
AND dbo.FACTINVOICEHEADER.PAID_DATE <= '2020-01-31'
第一个查询是选择 24 个月减去一天(2019 年 1 月 31 日)。
第二个查询是选择24个月。
第三个查询等同于第二个。
我继承了一个多机器学习过程,除了括号外,它们使用基本相同的日期查询。以下 3 个日期查询给出了不同的行数。每个日期查询为每个日期查询提供不同数量的行之间到底有什么区别?
1)
WHERE
((dbo.FACTINVOICEHEADER.PAID_DATE >= '2019-02-01'
AND dbo.FACTINVOICEHEADER.PAID_DATE <= '2020-01-31')
OR (dbo.FACTINVOICEHEADER.PAID_DATE >= '2018-02-01'
AND dbo.FACTINVOICEHEADER.PAID_DATE <= '2019-01-31'))
2)
WHERE
((dbo.FACTINVOICEHEADER.PAID_DATE >= '2018-02-01'
AND dbo.FACTINVOICEHEADER.PAID_DATE <='2020-01-31'))
3)
WHERE
dbo.FACTINVOICEHEADER.PAID_DATE >= '2018-02-01'
AND dbo.FACTINVOICEHEADER.PAID_DATE <= '2020-01-31'
第一个查询是选择 24 个月减去一天(2019 年 1 月 31 日)。
第二个查询是选择24个月。
第三个查询等同于第二个。