选择两个日期之间的记录

时间:2013-03-11 13:20:20

标签: sql sql-server sql-server-2005

Ive列CREATEDDATE(DATETIME)我需要找到两个日期之间的所有行 $ startDate $ endDate格式('d / m / Y')?

SELECT * FROM TABLE 
 WHERE CREATEDDATE >= CONVERT(DATETIME, $startDate, 103)
 AND CREATEDDATE <= CONVERT(DATETIME, $endDate, 103)

http://sqlfiddle.com/#!3/b0478/5问题在哪里?!

3 个答案:

答案 0 :(得分:2)

这很简单,可以通过谷歌搜索找到。
在问问题之前,你应该首先谷歌..

Select * From Tbl where CREATEDDATE between $date1 and  $date2 

如果$ date1为varchar,则必须使用CONVERT(DATETIME, $date1, 103)(对于'd / m / y')
对于sql中的datetime转换,您可以参考this link..

以下是解决方案:

updated Fiddle

答案 1 :(得分:1)

sqlfiddle中的真正问题是你在变量声明中输入字符串,但sql语句:

declare @FromDate datetime = '11/03/2013'  --here a type casting!!
declare @ToDate datetime = '12/03/2013'

然后这没有效果:

xCreatedDate < convert(datetime,@ToDate,103)  --@toDate is yet a date!!

要修复,请在变量声明中将datetime更改为日期:

declare @FromDate varchar(10) = '11/03/2013'  --here without casting!!
declare @ToDate varchar(10) = '12/03/2013'

答案 2 :(得分:0)

select CREATEDDATE from table where CREATEDDATE BETWEEN $date1 AND $date2

或者您可以使用

select CREATEDDATE from table where CREATEDDATE > $date1 AND CREATEDDATE < $date2