【问题标题】:Combining year column and month column to date结合迄今为止的年列和月列
【发布时间】:2017-05-25 06:57:19
【问题描述】:

在我的数据库中,我有一个 report_year 列 (char(4)) 和一个 report_month 列 (varchar(2))。我正在制作一个 ssrs 报告,该报告将使用存储过程并从该表中提取数据,我的参数是日期和年份。我通过转换两列并连接它们成功地做到了这一点,还在它们之间添加了一个“/”。所以在 SSRS 报告中,用户需要输入的参数是月份和日期(例如 09/2016)。

用户希望通过下拉菜单获取日期。由于我的参数是一个 varchar,它会逐字询问上面格式化的月份和年份。无论如何,是否可以在没有日期的情况下将其投射到日期,只有月份和年份?我尝试了 datediff 和 dateadd 函数,但我没有任何运气。

【问题讨论】:

  • 年份和月份是整数,使用适当的数据类型。如果您正在处理日期,请使用 date 数据类型。使用正确的数据类型使一切变得更容易。我也没有真正得到您的问题,您是在问是否可以将“09/2016”转换为日期时间?不,你不能,约会需要一天。如果要默认为一天,可以使用DATEFROMPARTSSUBSTRING
  • 我尝试将它们都转换为 int 并将我的变量也创建为 int。当我这样做时,它不会给出任何结果。示例:将 @reportdate 声明为 int = '201609' select.... from.... where.... and cast(reportyear as int) + cast(reportmonth as int) = atreportdate(我不能使用超过一个“at”符号,所以我从字面上看)

标签: sql sql-server tsql date


【解决方案1】:
Select BegMonth = cast(Replace('09/2016','/','/01/') as date)
      ,EndMonth = EOMonth(cast(Replace('09/2016','/','/01/') as date))

返回

BegMonth    EndMonth
2016-09-01  2016-09-30

【讨论】:

  • hmmm...我喜欢这个想法,但它不能解决我在 SSRS 中的问题。我需要一个包含月份和年份的下拉列表。这一天对我来说并不重要,因为那里没有白天字段。我们只考虑了月份输入的数据,因此为什么会有一个年份和月份的列。我不同意这些字段的构建方式,但是嘿,我没有创建它。
猜你喜欢
  • 2015-06-21
  • 2019-07-14
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2017-08-14
  • 2014-03-07
  • 2014-10-02
相关资源
最近更新 更多