我需要一个SQL查询来计算直到特定日期的当前日期(直到当前月份和日期)的数据。我尝试了以下查询,它也过滤了上个月的日期,
您会看到它过滤到1月,2月和3月的11。但我想计算1月,2月以及3月11日之前的全部数据。
答案 0 :(得分:1)
您可以使用tv.paintFlags = Paint.ANTI_ALIAS_FLAG
代替<=
,如下所示-
<
答案 1 :(得分:1)
在MONTH
运算符中添加DAY
和AND
支票即可。
请尝试使用示例数据进行以下查询:
DECLARE @Orders TABLE (Id INT IDENTITY(1,1) NOT NULL, OrderDate DATETIME NOT NULL);
INSERT INTO @Orders (OrderDate) VALUES
('1997-01-01 10:00:00'), ('1997-01-15 10:00:00'), ('1997-01-13 10:00:00'),
('1997-02-02 10:00:00'), ('1997-02-20 10:00:00'), ('1997-02-13 10:00:00'),
(GETDATE()), (DATEADD(DAY, +10, GETDATE()));
SELECT *
FROM @Orders
WHERE YEAR(OrderDate) = 1997
AND (MONTH(ORDERDATE) <= MONTH(GETDATE()) AND DAY(ORDERDATE) < DAY(GETDATE()))
输出将是:
Id | OrderDate
-----------------------------
1 | 1997-01-01 10:00:00.000
4 | 1997-02-02 10:00:00.000
答案 2 :(得分:1)
选中此一项。通常,您需要的只是前几个月(无所谓)和当前日期以及前几天。
where
(Month([OrderDate]) < MONTH(GETDATE()) OR
(Month([OrderDate]) = MONTH(GETDATE()) AND DAY([OrderDate]) < DAY(GETDATE())))
AND YEAR([ORDERDATE]) = 1997
答案 3 :(得分:0)
只需将getdate()
转换为date
where cast(orderdate as date)<= cast(getdate() as date)
答案 4 :(得分:0)
您可以尝试:
where (Month([OrderDate]) < MONTH(GETDATE())
OR (Month([OrderDate]) = MONTH(GETDATE())
AND DAY([OrderDate]) < DAY(GETDATE())))
AND YEAR([ORDERDATE]) = 1998