Sql server SSRS如何将参数定义为7天前加1小时
我有一份使用SSRS和SQL Server生成的报告,我为报告设置了StartDate和EndDate参数 我已将StartDate的默认值设置为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个小时才能运行。这样行吗?您可以在
=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点返回。不是很重要,但既然我们在讨论一天和另一天之间的区别,我认为值得指出。