我想过滤掉所有具有未来日期的记录,以及当月的任何记录。我试图使用此查询:
...
WHERE (Month(DueDate) < Month(getdate()) AND (Year(DueDate) <= Year(getdate())))
问题在于,它不会返回上一年的任何结果,而是比当前月份大的一个月。即:今天的日期是18/12/9,它将不返回任何年份为10、11或12的记录,而与年份无关。
答案 0 :(得分:1)
这将在当月的第一个月之后过滤掉所有带有DueDate
的记录。
WHERE DueDate < DATEADD(MONTH ,DATEDIFF(MONTH, 0, GETDATE()), 0)
编辑:我有>
。应该是<
。
答案 1 :(得分:0)
尝试类似的东西:
SELECT ...
FROM ...
WHERE DueDate < DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1);
此解决方案使用DATEFROMPARTS
功能,您可以在documentation中查看更多信息。想法是获取当年的当前月份的第一天,并仅选择DueDate
在给定日期和时间之前的那些行。