首页 > 解决方案 > 基于具有日期范围的列中的两个值的 SQL 查询

问题描述

所以这就是我想要完成的。我想返回指定日期范围内的所有行,其中列中的值为一个值“C”或另一个“X”。我在 SQL 方面并不精通,而在为 excel 或 google 表格编写脚本方面更自如。我会假设有一个非常简单的解决方案,但这是我到目前为止所写的内容,但它不起作用。

Declare @FromDate DateTime
Declare @ToDate   DateTime

Set @FromDate='20201027'
Set @ToDAte  ='20201102'

select * from oehdr where OrderStatus='C' or OrderStatus='X'

当我修改当前尝试时,我收到的错误是“无效 SQL,无内存”和脚本错误。

标签: sqlsql-server

解决方案


问题中没有足够的信息。我们不知道日期列的名称,或者是否包含时间,或者ToDate值是否包含一整天。它甚至不是 100% 清楚你正在使用什么数据库,因为有一些与问题相矛盾的信息。

但我会尽我所能做出一些猜测:

Declare @FromDate DateTime = '20201027'
Declare @ToDate   DateTime = '20201102'

SELECT * 
FROM oehdr 
WHERE OrderStatus IN ('C', 'X')
    AND OrderDate >= @FromDate AND OrderDate < DATEADD(day, 1, @ToDate)

请注意,我没有使用运算BETWEEN符。BETWEEN在范围的两端都包含在内,这很少是我想要的日期。相反,当我想要一整天时,我会添加一天并在范围结束时使用排他条件。


推荐阅读