SQL查询-获取同一天、月份、期间和年份之间的记录



我有一个表,其中包含从2010年到现在的记录,并带有日期时间字段。需要查找多年来同一时期的记录。

我需要的示例:输入表单中两个日期(D1和D2(之间的行:11-15(11月15日(和01-15(明年1月15日2021-11-15至2022-01-152020-11-15至2021-01-152019-11-15至2020-01-15等等…

其他信息:搜索日期来自一个表单,所以它并不总是相同的。若日期段恰好在同一年,则我的查询有效。

我尝试过的:

SELECT * FROM my_table  WHERE (DATEPART(MONTH, date_field)>=11 
AND DATEPART(DAY, date_field)>=15) 
AND (DATEPART(MONTH, date_field)<=1 
AND DATEPART(DAY, datefield)<=15)

但显然它不起作用。。。。。

有什么想法吗?

您可以使用理货

with t0(n) as (
select n 
from (
values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)
) t(n)
), tally as(
select top(13) 2009 + row_number() over(order by t1.n)  year
from t0 t1, t0 t2, t0 t3
)
select m.*
from tally t
join mytable m on m.date_field >= datefromparts(t.year, 11, 15)
and date_field < datefromparts(t.year + 1, 1, 16);

您需要更改where条件以生成预期的记录

由于您希望记录在某一天/月的范围内,这些记录可以属于一个或另一个标准,因为"与",记录不能满足where子句,因此没有提取

从my_table 中选择*

其中(DATEPART(MONTH,date_field(>11和DATEPART(DAY,date_field(>15

或者(DATEPART(MONTH,date_field(<1和DATEPART(DAY,日期字段(<15(

这应该可以完成

最新更新