Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SSRS中的日期-时间转换/日期差异_Sql_Datetime_Reporting Services_Casting - Fatal编程技术网

Sql 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

我在下面的查询中使用了一份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(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]%';