【问题标题】:Getting the current week using T-SQL Using Parameters使用 T-SQL 使用参数获取当前周
【发布时间】:2014-12-24 08:56:33
【问题描述】:

我想在 SQL 查询中有一个函数,它将使用参数在 SSRS 2005 中显示当前的一周。我已经声明了两个变量@FromDate 和@ToDate。我在下面的 where 子句中使用了这两个变量

where SH.[] between CONVERT(datetime, @FromDate, 105) and CONVERT(datetime, @ToDate, 105)

如何使用@FromDat 和@ToDate 显示当前的一周?我可以帮忙吗?

谢谢

【问题讨论】:

  • 澄清您的问题。您在“当前周”下是什么意思?如果我查看日历 - 我现在看到当前周是 2014 年的第 52 周。但这与你的@FromDate@ToDate 没有任何关系——那么你想通过使用这些参数来实现什么?
  • 此 SSRS 报告需要发送给将获得本周销售额的人。因此,FromDate abd ToDate @AndyKorneyev
  • 它仍然没有澄清你所说的本周是什么意思。你的评论看起来被截断了。
  • @Andy 是对的,您的意思是能够将参数从(今天的日期)传递到(周末的日期)??如果是这种情况,那么您正在定义您希望一周结束的时间:),因为您有 FROM 和 TO !
  • @AndyKorneyev 我希望每周发送一次报告,其中包含当周周一到周五的销售额。是不是更清楚了?

标签: sql-server tsql reporting-services


【解决方案1】:
          CREATE TABLE dbo.TestDates (
            SaleID TINYINT IDENTITY(1,1),
            Amount NUMERIC(9,2),
            SaleDate DATETIME
            );

            GO

            INSERT INTO dbo.TestDates (Amount, SaleDate)
            VALUES (200.00, '2014-12-15'),
            (130.00, '2014-12-16'),
            (40.00, '2014-12-17'),
            (70.00, '2014-12-18'),
            (590.00, '2014-12-19')



            -----------------------------------------
 CREATE FUNCTION dbo.uspGetCurrentWeek(@From VARCHAR(100)
 RETURNS VARCHAR(100)

 AS

 BEGIN

DECLARE @StartCounter TINYINT = 1
DECLARE @EndCounter TINYINT = 5

     WHILE @StartCounter <= @EndCounter
         BEGIN

  DECLARE @String VARCHAR(100) = ( SELECT 'Week' +
                                        CAST(DATEPART(WEEK, SaleDate) AS VARCHAR(2))
                                         FROM dbo.TestDates
                 WHERE SaleDate = @From )
        SET @StartCounter = @StartCounter +1
                       END
              RETURN @String
      END
            --------------

            -----Test data ----
            SELECT *, dbo.uspGetCurrentWeek('2014-12-15')
            FROM dbo.TestDates;
            ---------------------------------

【讨论】:

  • 不能在WHERE子句中实现DateAdd部分吗?
  • @MohamedFareedh - 我更新了我的答案,这个解决方案会为你做的。您甚至可以在函数中指定周数!
  • @MohamedFareedh 为了使其更加自动化,我删除了周数的输入参数,它将使用 DATEPART() 函数自行获取。祝你好运,圣诞快乐! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
相关资源
最近更新 更多