1

我想问关于每周的问题。如何计算每月每周。例如,一个月有 30 天和 4 周。如果我选择一月的第二周。它将显示每月每周的数量和月份的名称。我希望结果显示每月的周数(不是每年的所有周数)和月份的名称。谢谢。

我想知道每个月的每周计算。

例如。一月

1-7 days------------   1 week
8-14 days------------  2 week
15-21 days------------ 3 week
22-28 days------------ 4 week
29 days - other------- 5 week

例如。二月

1-7 days------------   1 week
8-14 days------------  2 week
15-21 days------------ 3 week
22-28 days------------ 4 week

等等。

4

3 回答 3

2

您可以在查询中使用此分组:

GROUP BY DATEADD(DAY, -(DAY(DateColumn) - 1) % 7, DateColumn)

下图显示了上述表达式的工作原理:

DateColumn  DAY(DateColumn)  DAY(…) - 1  (DAY(…)-1) % 7  DATEADD(…)
----------  ---------------  ----------  --------------  ----------
2012-04-01  1                0           0               2012-04-01
2012-04-02  2                1           1               2012-04-01
2012-04-03  3                2           2               2012-04-01
2012-04-04  4                3           3               2012-04-01
2012-04-05  5                4           4               2012-04-01
2012-04-06  6                5           5               2012-04-01
2012-04-07  7                6           6               2012-04-01
2012-04-08  8                7           0               2012-04-08
2012-04-09  9                8           1               2012-04-08
…           …                …           …               …
2012-04-13  13               12          5               2012-04-08
2012-04-14  14               13          6               2012-04-08
2012-04-15  15               14          0               2012-04-15
…           …                …           …               …
2012-04-21  21               20          6               2012-04-15
2012-04-22  22               21          0               2012-04-22
…           …                …           …               …
2012-04-28  28               27          6               2012-04-22
2012-04-29  29               28          0               2012-04-29
2012-04-30  30               29          1               2012-04-29
2012-05-01  1                0           0               2012-05-01
2012-05-02  2                1           1               2012-05-01
…           …                …           …               …

如您所见,结果是一周的开始(您定义的)。

于 2012-04-05T18:28:07.720 回答
1

我已经得到了答案。你只是把:

select * from customer((DATEPART(day, [date_field] - 1) / 7 + 1 = :weeks) or (:weeks = ' '))
于 2012-04-06T01:36:06.530 回答
0

您的问题相当不清楚(“每周”是什么意思?每周是什么?)我不确定我是否真的理解它。但是我猜对于给定的日期,您想知道该月的星期几吗?

如果是这样,最简单的解决方案是一个日历表,该表存储周数和一年中每个日期所需的任何其他有用信息。您可以根据需要提前填充它多年,然后您可以编写如下查询:

select WeekInTheMonth
from dbo.Calendar
where BaseDate = @SomeDate

如果这没有帮助,您将需要准确显示您希望看到的输入参数和输出数据。

顺便说一句,我假设您正在使用 Aqua Data Studio 作为您的数据库客户端,但这与这个问题无关,因此您可能需要编辑标题。

于 2012-04-05T14:50:19.853 回答