SQL-WHERE 子句问题中的服务器日期时间

SQL-Server Datetime in WHERE Clause Issue

enter image description here我正在创建一个包含两个值的查询,一个期间编号和相应的日期。这些期间是与我们的月份相似但不相同的会计期间。日期基本上是正确的,但有一些不一致的地方,我想我会用 WHERE 语句来清理。

例如,日期 4/1/2015 属于第 3 期,但它同时出现在第 3 期和第 4 期。为了解决这个问题,我想我会创建一个 WHERE 语句,说明:

SELECT DISTINCT table1.period,
                table1.datetime
FROM table1
WHERE table1.period <> 4 AND table1.datetime <> '4/1/2015'

这带走了第 4 期的所有内容,而不仅仅是我需要的那个。我也试过日期时间语法:

AND table1.datetime <> '20150401 00:00:00.000'

两种语法的结果相同。我在 SQL 方面相当缺乏经验,并且一直讨厌处理日期时间值,所以任何帮助都会很棒。

-EDIT- 忘记在第一个日期时间 WHERE 子句中添加单引号。

你是说句点是字符串字段吗?你是说 varchar 吗?
您还想只检查日期部分,而不是时间?

那你可以试试这个

SELECT DISTINCT table1.period,
                table1.datetime
FROM table1
WHERE table1.period <> '4' 
AND convert(date, table1.datetime) <> '20150401'

尝试以下操作:

SELECT DISTINCT table1.period,
            table1.datetime
FROM table1
WHERE CASE WHEN table1.period = 4 AND CONVERT(VARCHAR(8),table1.datetime,112) = '20150401' THEN 1 ELSE 0 END = 0

这只会删除同时具有 period=4datetime=20150401 的行,而您的查询首先删除具有 period=4 的任何行(无论 [datetime] 是什么) , 然后去掉任何有 datetime=20150401.

的东西