Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 server SSRS如何将参数定义为7天前加1小时_Sql Server_Reporting Services - Fatal编程技术网

Sql server SSRS如何将参数定义为7天前加1小时

Sql server SSRS如何将参数定义为7天前加1小时,sql-server,reporting-services,Sql Server,Reporting Services,我有一份使用SSRS和SQL Server生成的报告,我为报告设置了StartDate和EndDate参数 我已将StartDate的默认值设置为=DateAdd(“D”,-7,Today()) 我已将EndDate的默认值设置为=DateAdd(“H”,1,Today()) 如何向StartDate参数添加1小时 我试过了 =DateAdd("H", 1, (DateAdd("D", -7, Today()))) 这样行吗?我目前正在测试它,但报告通常需要6个小时才能运行。这样行吗?您可以在

我有一份使用SSRS和SQL Server生成的报告,我为报告设置了StartDate和EndDate参数

我已将StartDate的默认值设置为
=DateAdd(“D”,-7,Today())
我已将EndDate的默认值设置为
=DateAdd(“H”,1,Today())

如何向StartDate参数添加1小时

我试过了

=DateAdd("H", 1, (DateAdd("D", -7, Today())))

这样行吗?我目前正在测试它,但报告通常需要6个小时才能运行。

这样行吗?您可以在SQL Server中尝试这种方法。答案是肯定的:o)

但是,您应该使用NOW()函数而不是TODAY()函数(请参见下面的更新)

SQL Server:

SELECT DATEADD(HH, 1, DATEADD(DD, -7, GETDATE()))
SSRS/VS:

DateAdd(DateInterval.Hour, -167, Now())
更新:根据拉努的观点,今天()将默认为日期格式MM/DD/YYYY。如果您仅从今天减去167小时,则该字段将显示为日期时间,但结果将不正确,因为该时间将显示为凌晨1:00。因此,请使用NOW()函数,而不是TODAY()。结果将从当前时间算起167小时,格式为MM/DD/YYYY HH:MM:SS


此外,您还可以在参数字段中进行更改,然后单击VS中的预览以查看这些更改。您无需运行报告即可查看此更改。或者我不明白你想完成什么。

用小时而不是天来计算日期

=DateAdd("H", -169, Today())

是的,DateAdd返回一个日期,并且您正在使用返回值作为接受日期的函数的实际参数。是的,它应该可以工作。这样行吗?为什么不使用不同的报告进行检查,或者创建一个带有显示值的表达式的快速报告?所以不是一个代码检查网站;那将是……)@Larnu我不知道存在代码审查。感谢您提高认识。这将在SQL Server中起到不同的作用
Today()
返回日期(因此
2018-04-05
Today),但是SQL Server中的
GETDATE()
返回日期时间。对我来说,这就像是
2018-04-0521:38:47.517
。这是超过21小时的差异:)我以为他想测试功能。如果执行DateAdd(DateInterval.Hour,-169,Today())之类的操作,则日期字段将转换为日期时间。-167将显示1:00am作为时间(这与问题的原始表达式相同),而不是11:00pm-169将显示晚上11点,日期将提前一天,所以比今天早8天。不过,这并没有改变你观点的实质:如果在不同的时间查看报告,它将显示一个固定的时间,该时间不会改变,这可能是预期行为,也可能不是预期行为(从问题中提供的信息很难判断)。@CBlack我已经更新了我的答案以反映这一点。使用NOW()函数,而不是TODAY()。@J Weezy我知道这一点,但您说过将-167与TODAY()一起使用将返回11pm,这是不正确的-169将于今天前8天晚上11点返回-167上午1点返回。不是很重要,但既然我们在讨论一天和另一天之间的区别,我认为值得指出。