从日期开始获取记录时SQL Server出现问题

时间:2018-01-26 15:03:37

标签: sql-server sql-server-2008

我希望从日期(包括)开始获取所有记录。

如果我在where子句中使用以下内容,我会得到不同的记录:

SELECT * FROM MyTable WHERE DateTimeField >= '20101201'

比我在下面使用的那样:

SELECT * FROM MyTable WHERE DateTimeField >= Convert(datetime, '2010-12-01')

为什么我没有获得相同数量的寄存器?

我使用的是SQL Server 2008。

1 个答案:

答案 0 :(得分:3)

第二种情况下的文字常量取决于语言,这是一个例子:

set language [British English]
SELECT Convert(datetime, '2010-12-01');
----
-- 2010-01-12 00:00:00.000

set language us_english
SELECT Convert(datetime, '2010-12-01');
----
-- 2010-12-01 00:00:00.000

虽然'20121201'与语言无关。

因此,我认为您的会话语言(由login language定义,除非明确更改)与us_english不同,要解决此问题,您应使用与语言无关的日期文字'yyyymmdd'