SQL Server比较日期

问题描述:

我构建了一个连接到SQL Server 2008 R2的ASP.NET应用程序。我在这个上有个放屁。我正在尝试在用户选择的日期之间获取一些记录。SQL Server比较日期

应用程序构建一条sql语句并将其发送到服务器并等待记录的返回。 SQL语句如下所示。

SELECT * From policy pp where 20160115 between pp.policy_begin_date and pp.policy_end_date 

它返回所有记录。

我是否需要将'20160115'转换为日期时间变量?如果是的话,我该如何转换?

是的。像这样:

... WHERE CAST('2016-01-15' AS DATE) BETWEEN ... 

除非它确实是一个日期时间。

SELECT * 
From policy pp 
where cast('20160115' as datetime) between pp.policy_begin_date and pp.policy_end_date 

,因为它取决于服务器的语言,如果它的工作原理可以使用CAST or CONVERT

你要抛弃/你的字符串转换为日期。

最好的办法是使用convert并提供有关语言的信息:

convert(date[time], '20160115', 112)