sql-server - SELECT 语句返回 DATETIME 之外的行
问题描述
我在 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
工作正常;我在这里做错了什么?
解决方案
尝试使用如下逻辑运行您的第一个查询:
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'
,而不适用于两个值。
推荐阅读
- java - 如何在 Java 中替换正则表达式命名捕获组的内容
- c - 忽略:我只是重命名了标题来尝试一下
- python - 为什么通过python中的过滤器时文件听起来很糟糕
- java - 如何存储和检索泛型类型
- spring-boot - org.hibernate.QueryException:在 [] 之前未索引 fromElement
- regex - 如何使用正则表达式替换子字符串中的特定字符?
- python - 无法使用 cpp 库初始化 pyarrow
- azure-databricks - 在 azure databricks 上将 spark 数据帧转换为 Delta 表 - 警告
- android - 如何在 Android ImageView 上制作彩色滤镜?
- c# - 在 ASP.NET MVC Core 中强制注销