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=4
和 datetime=20150401
的行,而您的查询首先删除具有 period=4
的任何行(无论 [datetime] 是什么) , 然后去掉任何有 datetime=20150401
.
的东西
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=4
和 datetime=20150401
的行,而您的查询首先删除具有 period=4
的任何行(无论 [datetime] 是什么) , 然后去掉任何有 datetime=20150401
.