-4

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问题出在哪里?!

4

3 回答 3

2

这很简单,可以通过谷歌搜索找到..
您应该在提问之前先谷歌..

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

如果 $date1 是varchar那么你必须使用CONVERT(DATETIME, $date1, 103)(for 'd/m/y')
对于 sql 中的日期时间转换,你可以参考这个链接..

这是解决方案:

更新的小提琴

于 2013-03-11T13:22:35.573 回答
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!!

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

declare @FromDate varchar(10) = '11/03/2013'  --here without casting!!
declare @ToDate varchar(10) = '12/03/2013'
于 2013-03-11T15:16:46.553 回答
0
select CREATEDDATE from table where CREATEDDATE BETWEEN $date1 AND $date2

或者你可以使用

select CREATEDDATE from table where CREATEDDATE > $date1 AND CREATEDDATE < $date2
于 2013-03-11T13:24:23.093 回答