Sql SSRS中的日期-时间转换/日期差异
我在下面的查询中使用了一份SSRS报告。Sql SSRS中的日期-时间转换/日期差异,sql,datetime,reporting-services,casting,Sql,Datetime,Reporting Services,Casting,我在下面的查询中使用了一份SSRS报告。 (此查询在SQL server中运行良好,问题仅出现在SSRS报告中) --声明@Range Number=10; 从TBL1中选择*其中 用户名='MIKE' 和 ( @范围='10' 和 Convert(datetime,MyDate,120)试试这个 SELECT * FROM TBL1 WHERE USERNAME = 'MIKE' AND ( @Range = '10' and cast(m
(此查询在SQL server中运行良好,问题仅出现在SSRS报告中) --声明@Range Number=10; 从TBL1中选择*其中 用户名='MIKE' 和 ( @范围='10' 和 Convert(datetime,MyDate,120)试试这个
SELECT * FROM TBL1 WHERE
USERNAME = 'MIKE'
AND
(
@Range = '10'
and
cast(myDate as datetime) <= GETDATE()
)
or
(
@Range IN ('20','30')
and
cast(myDate as datetime) , GETDATE()) <= @Range
)
从TBL1中选择*,其中
用户名='MIKE'
和
(
@范围='10'
和
cast(myDate as datetime)您的问题可能是myDate
的某些值格式不正确。如果您使用的是较新版本的SQL Server,则函数try\u convert()
可能会大有帮助
它失败的原因是因为您的逻辑。或
之后的第二个条件是查看所有记录,而不仅仅是Mike的记录。我认为您打算将where
子句设置为:
SELECT *
FROM TBL1 WHERE
WHERE USERNAME = 'MIKE' AND
((@Range = '10' and Convert(datetime, MyDate, 120) <= GETDATE()
) or
(@Range IN ('20','30') and
DATEDIFF(DD, Convert(datetime, MyDate, 120) , GETDATE()) <= @Range
)
);
如果幸运的话,这将发现有问题的值。否则,您将不得不更深入地研究日期格式,查看特定的月和日(以及可能的小时、分钟和秒)值
寓意:将日期存储为日期。不要将其存储为varchar()
为什么要使用格式“103”如果varchar值存储为YYYY-MM-DD?哦,很抱歉,我使用的是120.Modified。再次说明:将varchar数据类型转换为datetime数据类型导致值超出范围。我知道它应该是日期格式。这是其他人的代码,我很痛苦。感谢您的回复,我将尝试建议的选项。只需添加,我的查询工作正常SQL很好。它只在SSRS报告中出现问题。@user1820973…您似乎在MyDate
中的值中有问题。查询有时有效,但其他查询无效,这只是SQL Server尝试转换的行的问题。
SELECT *
FROM TBL1 WHERE
WHERE USERNAME = 'MIKE' AND
((@Range = '10' and Convert(datetime, MyDate, 120) <= GETDATE()
) or
(@Range IN ('20','30') and
DATEDIFF(DD, Convert(datetime, MyDate, 120) , GETDATE()) <= @Range
)
);
select MyDate
from tbl1
where MyDate not like '[0-9][0-9][0-9][0-9]-[0-2][0-9]-[0-3][0-9]%';