2017-07-18 82 views
0

我正在尝试编写一个用于在SSRS中创建数据源的创建语句。我的CREATE语句如下: -在SSRS中将字符串列转换为日期

Select TOP(cast(1000 as integer)) Name, 
TName, 
IName, 
IType, 
AvgPercent, 
FCount, 
PCount, 
AvgInPages, 
    CONVERT(VARCHAR(10),RunDate,103) AS RunDate, 
CONVERT(TIME(0), RunTime) AS RTime 
from Index 
where RunDateBetween @StartDate and @EndDate 

目前,我已经做了这样的CONVERT(VARCHAR(10),RunDate,103) AS RDate,但条款之间不工作。条款之间只给我开始日期的记录,之后没有任何记录。所以我想将varchar转换为日期我在网上搜索CONVERT(Date,RunDate,103) AS RunDate后尝试使用这个,但是这给了我日期和时间,而我只需要在该列中的日期。经过大量搜索后,我无法找到任何concerete解决方案。请帮助我。

+0

你的where子句应该是where RunDate在@StartDate和@ EndDate之间,RDate列不适用于你的where子句。另外请确保您的SSRS参数为Date数据类型 –

+0

首先,您不能在WHERE子句中使用SELECT子句中的别名,请参见[逻辑查询处理](http://www.nickyvv.com/) 2013/02 /逻辑查询processing.html)。哪些数据类型是您的RunDate列? – NickyvV

+0

@NickyvV我已经改变了该列的名称,同时发布这个,现在我编辑了代码,将其命名为RunDate ...我的查询正在执行..DataType是varchar(10) – Arr

回答

3

这个怎么样?

SELECT TOP 1000 NAME 
    ,TName 
    ,IName 
    ,IType 
    ,AvgPercent 
    ,FCount 
    ,PCount 
    ,AvgInPages 
    ,CAST(RunDate AS DATE) AS RDate 
    ,CONVERT(TIME(0), RunTime) AS RTime 
FROM INDEX 
WHERE CAST(RunDate AS DATE) BETWEEN @StartDate 
     AND @EndDate 
+0

谢谢!它为我工作。 – Arr

+0

很高兴为您效力。如果它有用,请接受它。 – Dave94

+0

我没有足够的声望来接受它。 – Arr