我想问每周一次的问题。如何计算每周permonth。例如 一个月有30天和4周permonth。如果我选择1月的第二周。它将显示每周permonth的数量和月份的名称。我希望结果显示每月的月数(不是每周的每周总数)和月份的名称。谢谢。
我想知道每月的每周计算结果。
例如。一月份的
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
例如。为2月份
1-7 days------------ 1 week
8-14 days------------ 2 week
15-21 days------------ 3 week
22-28 days------------ 4 week
等等。
答案 0 :(得分: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
… … … … …
正如您所看到的,结果是一周的开始(周在您定义的意义上)。
答案 1 :(得分:1)
我已经得到了答案。你刚才说:
select * from customer((DATEPART(day, [date_field] - 1) / 7 + 1 = :weeks) or (:weeks = ' '))
答案 2 :(得分:0)
你的问题还不清楚(“每周”是什么意思?每周什么?)我不确定我是否真的理解它。但我猜测,对于给定的日期,你想知道这个月的哪一周?
如果是这样,最简单的解决方案是calendar table,它存储一周的数字和一年中每个日期所需的任何其他有用信息。您可以提前填写它多年,然后您可以编写如下查询:
select WeekInTheMonth
from dbo.Calendar
where BaseDate = @SomeDate
如果这没有帮助,您需要准确显示您希望看到的输入参数和输出数据。
顺便说一句,我假设您正在使用Aqua Data Studio作为您的数据库客户端,但它与此问题无关,因此您可能需要编辑标题。