按月设置日期范围强制年份查询

Posted

技术标签:

【中文标题】按月设置日期范围强制年份查询【英文标题】:query by set date range forcing year based on month 【发布时间】:2020-10-22 14:50:00 【问题描述】:

SQL Server 2016 - PowerBI

我需要编写一个静态查询,该查询将在 PowerBI 中用于自动更新自己的仪表板,而不会获得任何使用我们公司预算周期(7 月 1 日至 6 月 30 日)的提示。我可以轻松地从我需要它的表,但它是我坚持的 where 子句。我需要它来查询以显示仅在 7/1/year - 6/30/year 之间完成的记录。有没有一种方法可以查询显示所有日期之间的记录

(if month(getdate()) in (1,2,3,4,5,6) then '7/1/' + year(getdate())) or else if month(getdate()) in (7,8,9,10,11,12) 然后 '7/1/' + year(dateadd(y,-1, getdate()))

(if month(Getdate()) in (1,2,3,4,5,6' then '6/30/' + year(getdate()) or else if month(getdate()) in ( 7,8,9,10,11,12) 然后 '6/30/' + year(datediff(y,1,getdate())))month(getdate()) in (1,2,3,4, 5,6) 然后 '7/1/' + 年(getdate()))

如果我将该代码写入查询,则在将 varchar 值“7/1/”转换为数据类型 int 时会出现错误错误。我认识到这是 / 行中的问题,并试图将 int 值附加到 varchar 但我似乎无法弄清楚如何解决这个问题。我错过了什么吗?

【问题讨论】:

【参考方案1】:

您需要先将 YEAR(GETDATE()) 转换为 VARCHAR,这样您就可以将字符串 '7/1/' 与年份(字符串)连接起来价值。现在您将拥有一个新字符串,例如 -“7/1/2020”。现在在应用其他条件之前再次将此字符串转换为 DATE。这将如下所示-

CAST('7/1/'+CAST(YEAR(GETDATE()) AS VARCHAR) AS DATE)

【讨论】:

很高兴看到它起作用了。如果真的有帮助,你也可以投赞成票:)

以上是关于按月设置日期范围强制年份查询的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 jQuery 日期选择器的年份范围:1900 到当前年份,或 1900 到 9999

SQL语言中按月查询

Django,Postgresql 按月聚合函数也使用年份

如何简化 Laravel 查询以按年搜索日期并按月分组

DATEDIFF 按创建日期划分范围,利用外部日期按月计算年龄历史

web api设计:日期范围查询(只有月份和年份)