选择每月的最后7天

时间:2016-07-25 09:09:36

标签: sql-server function date dateadd

我正在使用SQL Server 2008.我希望仅在每个月的最后7个日历日带回来,我将如何进行此操作。

由于

4 个答案:

答案 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;