当前位置: 首页 > 知识库问答 >
问题:

通过设置日期范围查询,强制基于月份的年份

阳兴朝
2023-03-14

SQL Server 2016 - PowerBI

我需要编写一个静态查询,该查询将在PowerBI中用于自动更新自身的仪表板,不会获得任何使用我们公司预算周期(7月1日至6月30日)的提示。我可以很容易地从表中提取我需要的数据,但我却被where子句卡住了。我需要它来查询以显示仅在7/1/{year} - 6/30/{year}之间完成的记录。有没有一种方法可以查询显示所有日期在之间的记录

(如果月份(获取日期)在 (1,2,3,4,5,6) 中,然后是“7/1/”年(获取日期))或如果月份(获取日期)在 (7,8,9,10,11,12) 中,则“7/1/”年份(日期添加(y,-1,获取日期))

(如果月(Getdate())在(1,2,3,4,5,6'然后'6/30/'年(getdate()))或者如果月(getdate())在(7,8,9,10,11,12)然后'6/30/'年(datedff(y,1, getdate()))月(getdate())在(1,2,3,4,5,6)然后'7/1/'年(getdate()))

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

共有1个答案

骆英纵
2023-03-14

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

CAST('7/1/'+CAST(YEAR(GETDATE()) AS VARCHAR) AS DATE)
 类似资料:
  • 我很难确定在SQL中只根据月份和年份来比较日期的最佳方式。 我们根据日期进行计算,并且由于按月计费,因此该月的日期造成了更多的障碍。 比如说 上述示例不会返回任何行,因为@date1大于@date2。所以我想找个方法把这一天从等式中去掉。 同样,下面的情况也同样让我感到悲伤。 我已经完成了日期的内联转换,以导出指定日期的第一天和最后一天。 一定有更简单的方法。有什么建议吗?

  • 问题内容: 我在确定仅基于月份和年份的SQL中比较日期的最佳方法时遇到了麻烦。 我们会根据日期进行计算,由于结算是按月进行的,所以该月的日期造成了更大的障碍。 例如 上面的示例将不返回任何行,因为@ date1大于@ date2。因此,我想找到一种摆脱困境的方法。 同样,以下情况由于相同的原因也让我感到悲伤。 我已经完成日期的内联转换,以得出指定日期的月份的第一天和最后一天。 必须有一种更简单的方

  • 我的文档中有一个日期范围(使用日期对象)如下所示 我试图弄清楚如何构建一个查询来返回包含特定日期的所有事件,例如,像.... 如果查询显示类似这样的内容,但在Firestore查询限制下可能不可能出现这种情况。 因此,我一直在挠头几个小时,要么为此构建一个查询,要么以某种方式结构我的数据,以允许这样做。 这有可能吗?

  • 问题 你的代码需要在当前月份中循环每一天,想找到一个计算这个日期范围的高效方法。 解决方案 在这样的日期上循环并需要事先构造一个包含所有日期的列表。 你可以先计算出开始日期和结束日期, 然后在你步进的时候使用 datetime.timedelta 对象递增这个日期变量即可。 下面是一个接受任意 datetime 对象并返回一个由当前月份开始日和下个月开始日组成的元组对象。 from datetim

  • 我需要帮助查询与日期范围的长收集。请参阅下面的示例文档。我想用日期范围查询startTime字段。

  • 问题内容: 我需要从具有列的表中抓住一些记录,这是一个(没有时间)。我只需要通过比较年份和月份来过滤记录。例如,我希望所有出生于1990年3月的用户。日子并不重要。 您如何处理? 问题答案: 您可以使用 它将对HQL有效