简体   繁体   English

比较SQL Server中的日期

[英]Compare Date in SQL Server

I building an ASP.NET application that connects to SQL Server 2008 R2. 我构建一个连接到SQL Server 2008 R2的ASP.NET应用程序。 I having a brain fart on this one. 我对这个有一个大脑屁。 I am trying to get some records between a date that the user chooses. 我想在用户选择的日期之间获取一些记录。

The application builds a sql statement and sends it to the server and waits for a return of records. 应用程序构建一个sql语句并将其发送到服务器并等待返回记录。 The SQL statement looks like this. SQL语句如下所示。

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

It returns all records. 它返回所有记录。

Do I need to convert '20160115' to a datetime variable? 我需要将'20160115'转换为日期时间变量吗? If so how do I convert that? 如果是这样我该怎么转换呢?

Yes. 是。 Like this: 像这样:

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

Unless it's really a datetime. 除非它真的是一个约会时间。

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

You can use CAST or CONVERT 您可以使用CAST或CONVERT

You SHOULD cast/convert your string to date, because it is depending on the language of the server if it works. 您应该将您的字符串转换/转换为日期,因为它取决于服务器的语言是否有效。

Best way is to use convert and give information about language: 最好的方法是使用转换并提供有关语言的信息:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM