SQL查询..如何在特定列

时间:2018-03-15 11:44:33

标签: sql sql-server

我有一个MS SQL表,表中的一行有特定的日期。示例:2019-11-30 22:00:21.000

我希望构建一个SQL查询,该查询将转到我的表中,并且只有在此特定列中的日期介于TODAY + 30天之间时才打印结果

这是我所拥有的,但到目前为止没有快乐

SELECT FOOD_TYPE, BEST_BEFORE 
FROM TABLE 
WHERE BESTBEFORE < GETDATE() - 30;

它没有抱怨语法,但也没有显示结果

5 个答案:

答案 0 :(得分:2)

将BETWEEN和CAST用作DATE,否则它将无法获取今天的日期:

react-dom elements

答案 1 :(得分:1)

您可能想尝试:

SELECT FOOD_TYPE, BEST_BEFORE 
FROM TABLE 
where BESTBEFORE < dateadd(day, 30, getdate())

如果TABLE列小于治疗日期加上30天,此查询将返回BESTBEFORE中的所有记录。

答案 2 :(得分:1)

您需要GETDATE()过滤器。请注意,DATETIMEDATE(带有时间价值),如果您需要完整的日期,则可能需要转换为BETWEEN(如我的示例所示)。此外,使用SELECT FOOD_TYPE, BEST_BEFORE FROM TABLE WHERE BESTBEFORE BETWEEN CONVERT(DATE, GETDATE()) AND CONVERT(DATE, GETDATE() + 30) 表示您要比较的两个限制都包含在内。

{
            "name": "InstanceInputEndpointNatPool",
            "properties": {
              "backendPort": 10000,
              "frontendIPConfiguration": {
                "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancers_01_name')), '/frontendIPConfigurations/LoadBalancerIPConfig')]"
              },
              "frontendPortRangeStart": 10100,
              "frontendPortRangeEnd": 10500,
              "protocol": "Tcp"
            }
          }

答案 3 :(得分:0)

根据您的描述,您需要:

SELECT FOOD_TYPE, BEST_BEFORE 
FROM TABLE 
WHERE BESTBEFORE < DATEADD(day, 30, GETDATE());

请注意,GETDATE()有一个时间组件,我猜测BESTBEFORE没有。时间组件不应影响此查询。此外,此版本是“sargable”,这意味着查询可以使用BEST_BEFORE上的索引。

答案 4 :(得分:0)

您必须尝试此SQL查询。它完成了您的要求。

tail

如果有疑问,请告诉我。