gpt4 book ai didi

sql - Sql Select 查询中的多个日期范围

转载 作者:行者123 更新时间:2023-12-02 17:22:46 40 4
gpt4 key购买 nike

我目前正在使用 Sql Server 语言开发 C#,尝试设计一个必须选择季度(Q1、Q2、Q3、Q4)的查询。

我的问题是,假设如果前端用户只选择第一季度,那么我可以将查询设置为第一季度的日期范围,如果用户选择第一季度和第二季度,那么我仍然可以设置日期范围对于 Q1 和 Q2,因为它们属于序列日期范围。

但是,如果用户选择 Q1 和 Q3,那么我该如何准备日期范围查询(在存储过程中或简单的选择查询中)并为此执行。

我试过这个但没用。

where CDate in(cdate between '2015-05-20' and '2015-06-01' 
and CDate between '2016-06-03' and '2016-06-04'

select * from MM where @innerstring

我想将@innerstring 作为参数发送到sql 存储过程,然后准备/执行它。但我不想使用临时表来存储不同日期范围的查询数据,然后合并该结果。因为我也有不同的参数。

谢谢。

最佳答案

您不需要 in。这应该有效:

where (cdate between '2015-05-20' and '2015-06-01' or
cdate between '2016-06-03' and '2016-06-04'
)

请注意,带有日期的 between 可能是危险的/中间领先的,正如 Aaron Bertrand 在有趣的 blog 中解释的那样.我会去:

where (cdate >= '2015-05-20' and cdate < '2015-06-02' or
cdate >= '2016-06-03' and cdate < '2016-06-05'
)

即使 cdate 具有时间组件,这也能安全地工作。

关于sql - Sql Select 查询中的多个日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41427464/

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