SELECT语句返回DATETIME之外的行

时间:2018-08-31 17:51:23

标签: sql-server

我在SQL Server中有一条select语句,该语句提取的行数超过了应有的行数,我不知道为什么。

SELECT
    CONVERT(varchar(50), [EventStamp], 120)
FROM 
    A2ALMDB.dbo.v_AlarmHistory
WHERE 
    EventStamp BETWEEN '2018-08-31 00:00' AND '2018-09-01 00:00'
    AND Area = 'Additives_CLX' OR Area = 'Mixer_CTRLX'
ORDER BY 
    EventStamp DESC

该语句将从我的数据库中返回〜250000行,以挖掘我想要的日期之外的日期:

SELECT
    CONVERT(varchar(50), [EventStamp], 120)
FROM 
    A2ALMDB.dbo.v_AlarmHistory
WHERE 
    EventStamp BETWEEN '2018-08-31 00:00' AND '2018-09-01 00:00'
    AND Area = 'Additives_CLX' 
ORDER BY 
    EventStamp DESC

工作正常;我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

尝试使用以下逻辑运行您的第一个查询:

SELECT CONVERT(varchar(50), [EventStamp], 120)
FROM A2ALMDB.dbo.v_AlarmHistory
WHERE EventStamp BETWEEN '2018-08-31 00:00' AND '2018-09-01 00:00' AND
      Area IN ('Additives_CLX', 'Mixer_CTRLX')
ORDER BY EventStamp DESC;

这可能就是您想要的。您的查询被解析为:

WHERE (EventStamp BETWEEN '2018-08-31' AND '2018-09-01' AND Area = 'Additives_CLX') OR
      Area = 'Mixer_CTRLX'

因此日期条件仅适用于'Additives_CLX',而不适用于两个值。