【发布时间】:2013-09-17 05:50:25
【问题描述】:
我有两个约会 FromDate 和 ToDate。开始总是星期一,ToDate 总是星期五。
- 我想单独计算周数,而不仅仅是计数。
- 我想在给定的日期范围内显示第 1 周、第 2 周、第 3 周等报告。 (即每周产品计数)。
我已经试过了:
SELECT * FROM WeekDate
WHERE DATEDIFF(Week,GETDATE(),'2013-09-20')=0
它不仅提供第 0 周的所有值。 谁能帮我解决这个问题?
表结构
CREATE TABLE [dbo].[WeekDate]
(
[id] [int] IDENTITY(1,1) NOT NULL,
[Counter] [int] NULL,
[CDate] [datetime] NOT NULL
) ON [PRIMARY]
数据是
1 1 2013-09-17 00:00:00.000
3 2 2013-09-18 00:00:00.000
4 6 2013-09-19 00:00:00.000
5 2 2013-09-23 00:00:00.000
6 3 2013-09-24 00:00:00.000
7 4 2013-10-01 00:00:00.000
【问题讨论】:
-
请提供有关表结构的更多信息和预期结果的示例。
-
请包含您的数据和所需的输出
-
“它给出了所有的值”——当然是。再次查看您的
WHERE子句,并注意您没有引用 any 列。WHERE子句是常量表达式,只能为真(返回所有行)或假(不返回行) -
创建表 [dbo].[WeekDate]( [id] [int] IDENTITY(1,1) NOT NULL, [Counter] [int] NULL, [CDate] [datetime] NOT NULL )在 [PRIMARY] 上,数据为 1 1 2013-09-17 00:00:00.000 3 2 2013-09-18 00:00:00.000 4 6 2013-09-19 00:00:00.000 5 2 2013-09-23 00:00:00.000 6 3 2013-09-24 00:00:00.000 7 4 2013-10-01 00:00:00.000 我想每周获得计数总和。我只是发送 Fromdate 和 Todate 作为参数。
-
你总是得到 0,因为你使用
GETDATE()和一个恰好在同一周的日期常量。SELECT * FROM WeekDate WHERE DATEDIFF(Week,FromDate,ToDate)=0
标签: sql sql-server-2008