SQL Datetime不兼容

时间:2014-10-15 12:44:16

标签: sql sql-server sql-server-2005 reporting-services

我有一个查询,我需要获取一系列日期,它是一个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时正常工作?

2 个答案:

答案 0 :(得分:1)

  

它是一个SSRS查询,因此日期以varchars

的形式出现

如果您传入参数,可以将参数设置为日期类型。不知道那里有什么问题。

  

有没有办法让datetime在转换为varchar时正常工作?

不是您想要的方式 - 当您转换为varchar时,排序(和比较)使用字符串值而不是它们代表的日期。

如果ReleasedDatevarchar列,请先将其转换为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')