当前位置:  开发笔记 > 数据库 > 正文

SQL WHERE DateTime介于两者之间

如何解决《SQLWHEREDateTime介于两者之间》经验,为你挑选了1个好方法。

我在这里有这个问题:

SELECT * 
FROM QuestionnaireAnswer 
WHERE dateCreated BETWEEN CAST('20/12/2015' AS datetime) AND CAST('22/12/2015' AS datetime)

但是我一直收到这个错误,怎么回事?以及如何解决?

将varchar数据类型转换为日期时间数据类型会导致超出范围的值.

marc_s.. 7

SQL Server支持许多格式 - 请参阅CDN和CONVERT上的MSDN联机丛书.大多数这些格式取决于您拥有的设置 - 因此,这些设置可能会有效 - 有时不会.

解决此问题的方法是使用SQL Server支持的(略微调整的)ISO-8601日期格式 - 此格式始终有效 - 无论您的SQL Server语言和日期格式设置如何.

在ISO-8601格式由SQL Server支持有两种形式:

YYYYMMDD只为日期(没有时间部分); 请注意:没有破折号!,这非常重要!YYYY-MM-DD不是独立于你的SQL Server的日期格式设置,将适用于所有情况!

要么:

YYYY-MM-DDTHH:MM:SS对于日期和时间 - 请注意:此格式破折号(但可以省略),并且T在您的日期和时间部分之间固定为分隔符DATETIME.

这适用于SQL Server 2000及更高版本.在具体情况下,请使用以下WHERE子句:

WHERE dateCreated BETWEEN '20151220' AND '20151222'

并且您甚至不需要任何显式CAST操作(或者如果您想使用显式操作CAST- 那么我建议您转换为DATE数据类型 - 而不是DATETIME).

如果您使用SQL Server 2008或更新版本以及DATE数据类型(仅限DATE- DATETIME!),那么您确实也可以使用该YYYY-MM-DD格式,并且该格式也适用于SQL Server中的任何设置.

不要问我为什么整个主题如此棘手而且有些混乱 - 这就是它的方式.但是使用这种YYYYMMDD格式,您可以适用于任何版本的SQL Server以及SQL Server中的任何语言和日期格式设置.

DATE如果您只需要日期部分,并且DATETIME2(n)需要日期和时间,则建议使用SQL Server 2008及更高版本.您应尽可能尝试开始逐步淘汰DATETIME数据类型



1> marc_s..:

SQL Server支持许多格式 - 请参阅CDN和CONVERT上的MSDN联机丛书.大多数这些格式取决于您拥有的设置 - 因此,这些设置可能会有效 - 有时不会.

解决此问题的方法是使用SQL Server支持的(略微调整的)ISO-8601日期格式 - 此格式始终有效 - 无论您的SQL Server语言和日期格式设置如何.

在ISO-8601格式由SQL Server支持有两种形式:

YYYYMMDD只为日期(没有时间部分); 请注意:没有破折号!,这非常重要!YYYY-MM-DD不是独立于你的SQL Server的日期格式设置,将适用于所有情况!

要么:

YYYY-MM-DDTHH:MM:SS对于日期和时间 - 请注意:此格式破折号(但可以省略),并且T在您的日期和时间部分之间固定为分隔符DATETIME.

这适用于SQL Server 2000及更高版本.在具体情况下,请使用以下WHERE子句:

WHERE dateCreated BETWEEN '20151220' AND '20151222'

并且您甚至不需要任何显式CAST操作(或者如果您想使用显式操作CAST- 那么我建议您转换为DATE数据类型 - 而不是DATETIME).

如果您使用SQL Server 2008或更新版本以及DATE数据类型(仅限DATE- DATETIME!),那么您确实也可以使用该YYYY-MM-DD格式,并且该格式也适用于SQL Server中的任何设置.

不要问我为什么整个主题如此棘手而且有些混乱 - 这就是它的方式.但是使用这种YYYYMMDD格式,您可以适用于任何版本的SQL Server以及SQL Server中的任何语言和日期格式设置.

DATE如果您只需要日期部分,并且DATETIME2(n)需要日期和时间,则建议使用SQL Server 2008及更高版本.您应尽可能尝试开始逐步淘汰DATETIME数据类型

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有