SQL查询以获取直到特定日期的当前日期(包括月份和日期)的数据

时间:2019-03-12 06:12:14

标签: sql sql-server tsql

我需要一个SQL查询来计算直到特定日期的当前日期(直到当前月份和日期)的数据。我尝试了以下查询,它也过滤了上个月的日期,

enter image description here

您会看到它过滤到1月,2月和3月的11。但我想计算1月,2月以及3月11日之前的全部数据。

5 个答案:

答案 0 :(得分:1)

您可以使用tv.paintFlags = Paint.ANTI_ALIAS_FLAG 代替<=,如下所示-

<

答案 1 :(得分:1)

MONTH运算符中添加DAYAND支票即可。

请尝试使用示例数据进行以下查询:

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