sql - TSQL 关于日期的不等于运算符

标签 sql sql-server t-sql

SELECT * FROM TABLE_NAME
WHERE 
([DateOfLastTransaction] <> @p29) 
OR ([DateOfLastTransaction] <> @p30)

@p29='2012-11-30 00:00:00.000',  3 records
@p30='2012-04-17 00:00:00.000'  1 record

我从 SQL 探查器获取查询并删除了不必要的位。删除 OR 和 @p30 参数将返回 3 条记录。是“OR”影响它吗?

我有 4 条记录(需要排除)和 2 个日期,但我的查询不起作用。这是为什么?我是不是在做一些非常愚蠢的事情?

最佳答案

我相信您打算使用 AND 逻辑运算符。例如

SELECT *
FROM Table_Name
WHERE 
     [DateOfLastTransaction] != @p29
     AND [DateOfLastTransaction] != @p30

所有内容都将通过 OR 运算符返回,因为 [DateOfLastTransaction] 可能在第一次逻辑比较中合格,但在第二次逻辑比较中无效。

关于sql - TSQL 关于日期的不等于运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16065364/

相关文章:

sql - GROUP BY 和 ORDER BY

sql-server - 为什么在填充表后为其建立索引时 SQL Server 会运行得更快?

sql - 使用 SQL 函数用空格填充字符串

sql-server - TSQL 函数计算指定日期的 30 个工作日日期 (SQL Server 2005)

sql - 尝试在 T-sql 中调用存储过程时, '=' 附近的语法不正确

sql - 如何使用SQL对不同日期进行分组?

SQL Server 2005,把列变成行

c# - 如何从 .NET 执行 SSIS 包?

c# - Web 引用中断 SSIS 包