Sql 比较where子句中的英制格式日期时出错

Sql 比较where子句中的英制格式日期时出错,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,当我在SQLServer2005中运行这个时,我得到了一个错误 select * from productratedates where RateDate BETWEEN '31/10/2009' AND '03/11/2009' 错误:将char数据类型转换为datetime数据类型导致datetime值超出范围 但当我在SQLServer2005中运行这个时。完全可以 select * from productratedates where RateDate BETWEEN '2009

当我在SQLServer2005中运行这个时,我得到了一个错误

select * from productratedates 
where RateDate BETWEEN '31/10/2009' AND '03/11/2009'
错误:将char数据类型转换为datetime数据类型导致datetime值超出范围

但当我在SQLServer2005中运行这个时。完全可以

select * from productratedates 
where RateDate BETWEEN '2009-10-31' AND '2009-11-03'
我想比较一下英国格式的日期


任何帮助

您可以在将日期发送到服务器之前将其转换为
YYYY-MM-DD
格式。

您可以在将日期发送到服务器之前将其转换为
YYYY-MM-DD
格式。

您的评论说您希望以日/月/年格式输入日期。您可以使用以下选项选择该格式:

例如:

set dateformat dmy
select cast('31/10/2009' as datetime) -- succeeds
set dateformat mdy
select cast('31/10/2009' as datetime) -- fails
您可以使用以下命令检索当前日期格式设置:

A及其日期格式可从以下网站获得:

exec sp_helplanguage
对我来说,称为“British”的语言有dateformat
dmy
。因此,您可以将登录名的默认语言更改为英国语(从登录名的属性页)。您甚至可以在以下列表中指定该语言:

Server=;Uid=;Pwd=;当前语言=英国语

您的评论说您希望以日/月/年格式输入日期。您可以使用以下选项选择该格式:

例如:

set dateformat dmy
select cast('31/10/2009' as datetime) -- succeeds
set dateformat mdy
select cast('31/10/2009' as datetime) -- fails
您可以使用以下命令检索当前日期格式设置:

A及其日期格式可从以下网站获得:

exec sp_helplanguage
对我来说,称为“British”的语言有dateformat
dmy
。因此,您可以将登录名的默认语言更改为英国语(从登录名的属性页)。您甚至可以在以下列表中指定该语言:

Server=;Uid=;Pwd=;当前语言=英国语

日期尽可能以美国格式读取,因此“2009年10月31日”必须是英国格式,但“2009年11月3日”则改为3月11日。时间倒流会把你们的关系搞得一团糟

我不知道它是否适用于您,但我们始终使用dd mmm yyyy格式:

select * from productratedates where RateDate BETWEEN '31-oct-2009' AND '03-nov-2009'

日期尽可能以美国格式读取,因此“31/10/2009”必须是英国格式,但“03/11/2009”则改为3月11日。时间倒流会把你们的关系搞得一团糟

我不知道它是否适用于您,但我们始终使用dd mmm yyyy格式:

select * from productratedates where RateDate BETWEEN '31-oct-2009' AND '03-nov-2009'

日期的格式实际上是一个接口问题。如果只查看数据,则日期应始终采用一种特定格式
YYYY/MM/DD

您的界面负责以本地化格式显示日期。通过使用这种实践,脚本在使用位置和语言方面模棱两可。因此,应始终以标准格式比较日期


我建议你做的是让你的界面以你喜欢的格式显示出来,后端(包括SQL语句)是标准化的日期格式。

日期的格式实际上是一个界面的事情。如果只查看数据,则日期应始终采用一种特定格式
YYYY/MM/DD

您的界面负责以本地化格式显示日期。通过使用这种实践,脚本在使用位置和语言方面模棱两可。因此,应始终以标准格式比较日期

我建议你做的是让你的界面以你喜欢的格式显示出来,后端(包括SQL语句)是标准化的日期格式