我正在使用SQL Server 2008.我希望仅在每个月的最后7个日历日带回来,我将如何进行此操作。
由于
答案 0 :(得分:0)
假设字段称为logtime,使用
获取范围....where logtime BETWEEN dateadd(month,month(logtime),dateadd(year, year(logtime) - 1900,0)) - 7
AND
dateadd(month,month(logtime),dateadd(year, year(logtime) - 1900,0)) - 1;
你还需要检查' logtime' (由您的字段名称替换)在您选择的日期范围内,例如... AND(YEAR(logtime))= 2016 ..例如
答案 1 :(得分:0)
一些具体的例子和方向会有所帮助。如果您只想要行,例如columnA
包含的日期在相应月份的最后7天内,那么您可以简单地说:
WHERE month(columnA) != month(dateadd(day,7,columnA))
即。它问了一个问题,“给定一个日期,A,7天后的日期会在不同的月份下降吗?”
请注意,此查询和其他答案中包含的查询都不能使用此列上的索引(因为我们将其用作计算的输入),这是一种耻辱。
答案 2 :(得分:0)
试试这个
SELECT
*
FROM
Payments P
WHERE
P.PaymentDay < (SELECT DATEADD(month, ((YEAR(P.PaymentDay) - 1900) * 12) + MONTH(P.PaymentDay), -1)) AND -- Last day of current year-month
P.PaymentDay > (SELECT DATEADD(month, ((YEAR(P.PaymentDay) - 1900) * 12) + MONTH(P.PaymentDay), -7)) -- Last 7. day of current year-month
答案 3 :(得分:0)
试试这个:
--DAY(DATE) as day_of_month from day_master table.
select
a.day_id,a.day_of_month
from day_master a LEFT JOIN (select max(day_of_month) as 'max_day_of_month',day_id,month_no,year_no from day_master group by month_no,year_no)b ON b.month_no=a.month_no and a.year_no=b.year_no
where (b.max_day_of_month-a.day_of_month)<7 and a.month_no=11 and a.year_no=2017
GROUP BY a.month_no,a.year_no,a.day_id;