【发布时间】:2017-05-25 06:57:19
【问题描述】:
在我的数据库中,我有一个 report_year 列 (char(4)) 和一个 report_month 列 (varchar(2))。我正在制作一个 ssrs 报告,该报告将使用存储过程并从该表中提取数据,我的参数是日期和年份。我通过转换两列并连接它们成功地做到了这一点,还在它们之间添加了一个“/”。所以在 SSRS 报告中,用户需要输入的参数是月份和日期(例如 09/2016)。
用户希望通过下拉菜单获取日期。由于我的参数是一个 varchar,它会逐字询问上面格式化的月份和年份。无论如何,是否可以在没有日期的情况下将其投射到日期,只有月份和年份?我尝试了 datediff 和 dateadd 函数,但我没有任何运气。
【问题讨论】:
-
年份和月份是整数,使用适当的数据类型。如果您正在处理日期,请使用
date数据类型。使用正确的数据类型使一切变得更容易。我也没有真正得到您的问题,您是在问是否可以将“09/2016”转换为日期时间?不,你不能,约会需要一天。如果要默认为一天,可以使用DATEFROMPARTS和SUBSTRING。 -
我尝试将它们都转换为 int 并将我的变量也创建为 int。当我这样做时,它不会给出任何结果。示例:将 @reportdate 声明为 int = '201609' select.... from.... where.... and cast(reportyear as int) + cast(reportmonth as int) = atreportdate(我不能使用超过一个“at”符号,所以我从字面上看)
标签: sql sql-server tsql date