2017-05-25 29 views
0

我想让用户从文本框中选择报表中的月份和年份,并使用这些参数创建月份中的第一天和最后一个我的服务器参数'DateFrom'和'DateTo',所以我可以使用这些作为过滤器。如何创建从一个月和一年作为参数传递的完整日期时间

我已经试过:

@DateFrom   DATETIME, 
@DateTo    DATETIME, 
@Month    NVARCHAR(MAX) = NULL, 
@Year    NVARCHAR(MAX) = NULL 

AS 
    BEGIN 
     SET NOCOUNT ON; 

SET @DateFrom = '1.' & @Month & @Year 
SET @DateTo = DATEADD(m, 1, DATEADD(s, -1, @DateFrom)) 

任何帮助将aprreciated。

+1

你看着'DATEFROMPARTS',链接[这里](https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact -sql) – Shaneis

+0

编辑你的问题,并提供样本数据和期望的结果。为什么在处理日期和字符串时使用按位运算符('&')? –

+0

您使用的是哪个版本的SQL Server? – GarethD

回答

2

试试这个

SET @DateFrom = SELECT CAST(@Year + '-' + @Month + '-' + '01' AS DATE) 
SET @DateTo = DATEADD(m, 1, DATEADD(s, -1, @DateFrom)) 
+0

似乎不工作...报告没有返回任何数据。 –

+0

尝试打印日期并检查正在设置的日期。 – Sumit

+0

我用Profiler抓住了它。输出看起来不错: exec SSRS_SP_Report_TicketerSales @ DateFrom ='2017-05-01 00:00:00',@ DateTo ='2017-05-31 00:00:00' –

相关问题