gpt4 book ai didi

sql - 当日期分别存储为年月日时查找范围内的日期

转载 作者:行者123 更新时间:2023-12-04 22:40:34 26 4
gpt4 key购买 nike

我有一个表,其中包含年、月、日列,它们是 INT,还有一些其他列。 table 的尺寸非常大。

现在,我想检索日期范围内的数据,比如在@StartDate 和@EndDate 之间。

我正在使用的查询是:

SELECT * FROM DataTable
WHERE 10000*M.[YEAR]+100*M.[Month]+M.[Day] >= 10000*YEAR(@StartDate)+100*MONTH(@StartDate)+DAY(@StartDate)
AND 10000*M.[YEAR]+100*M.[Month]+M.[Day] < 10000*YEAR(@EndDate)+100*MONTH(@EndDate)+DAY(@EndDate)

这使得 SQL Server 扫描索引,而不是查找索引。

有没有办法让它成为Index Seek?我的意思是如何改变这里的逻辑?

我正在使用 SQL Server,但我想它也适用于其他数据库。

最佳答案

您可能对使用 DATEFROMPARTS ( year, month, day ) 感兴趣

SELECT * FROM DataTable M
WHERE DATEFROMPARTS(M.[Year], M.[Month], M.[Day]) between @StartDate and @EndDate

编辑根据评论,我建议创建一个日期持久计算字段,它将结合年、月和日

希望对你有帮助

关于sql - 当日期分别存储为年月日时查找范围内的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48548511/

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