我有一个查询,我需要获取一系列日期,它是一个SSRS查询所以日期作为varchars。问题是,当我在日期之间使用时,它不会返回我知道的任何值
declare @start datetime,
@end datetime
set @start =convert(datetime,'10/13/2014')
set @end =convert(datetime,'10/13/2014')
SELECT
ReleasedDate
FROM tblJobHold
WHERE ReleasedDate between @start and @end
同样的事情:
declare @start datetime,
@end datetime
set @start =convert(datetime,'10/13/2014')
set @end =convert(datetime,'10/13/2014')
SELECT
ReleasedDate]
FROM [tblJobHold]
WHERE[ReleasedDate] <= @start and [ReleasedDate] >= @end
有没有办法让datetime在转换为varchar时正常工作?
答案 0 :(得分:1)
它是一个SSRS查询,因此日期以varchars
的形式出现
如果您传入参数,可以将参数设置为日期类型。不知道那里有什么问题。
有没有办法让datetime在转换为varchar时正常工作?
不是您想要的方式 - 当您转换为varchar
时,排序(和比较)使用字符串值而不是它们代表的日期。
如果ReleasedDate
是varchar
列,请先将其转换为datetime
:
SELECT
ReleasedDate
FROM tblJobHold
WHERE CONVERT(DATETIME,ReleasedDate) between @start and @end
答案 1 :(得分:1)
您为开始和结束时间指定了相同的日期
由于您只提供日期,时间组件将为午夜,因为时间相同,您找不到任何记录
set @start =convert(datetime,'10/13/2014')
set @end =convert(datetime,'10/13/2014')