我想要使用SQL查询来滚动70周,65周和60周(单独)数据。我知道如何在几年和几个月内做到这一点,但我如何获得一个滚动的65周数据等?在SQL Server中获取滚动周数据
0
A
回答
2
如果我理解正确,你要知道有多少周是一个日期跨度,从2016-01-说01至2017-01-14。
在您转换日期为int(从天1900-01-01)像这样convert(int,DateColumn)
因此,你可以简单地转换日期为int,减,然后通过7
例如划分的SQL Server
2016年1月1日= 42368
2017年1月14日= 42747
(42747 - 42368)/ 7 = 54
一个SQL查询会是这个样子:
select (convert(int,GETDATE()) - convert(int,DateColumn))/7 as WeeksAgo from Table
用在一个WHERE语句来获得最后65周:
select * from Table where ((convert(int,GETDATE()) - convert(int,DateColumn))/7) < 65
0
不多来自这个问题继续下去,但你可以使用理货表
DECLARE @StartDateTime DATE = GETDATE() --Pick a starting Point
--tally tables http://www.sqlservercentral.com/articles/T-SQL/62867/
--===== Conditionally drop
IF OBJECT_ID('dbo.Tally') IS NOT NULL
DROP TABLE dbo.Tally
--===== Create and populate the Tally table on the fly
SELECT TOP 11000 --equates to more than 30 years of dates
IDENTITY(INT,1,1) AS N
INTO dbo.Tally
FROM Master.dbo.SysColumns sc1,
Master.dbo.SysColumns sc2
--===== Add a Primary Key to maximize performance
ALTER TABLE dbo.Tally
ADD CONSTRAINT PK_Tally_N
PRIMARY KEY CLUSTERED (N) WITH FILLFACTOR = 100
SELECT
DATEADD(WEEK, T.N, @StartDateTime) 'Week70'
FROM dbo.Tally T
WHERE
T.N <= 70
SELECT
DATEADD(WEEK, T.N, @StartDateTime) 'Week65'
FROM dbo.Tally T
WHERE
T.N <= 65
SELECT
DATEADD(WEEK, T.N, @StartDateTime) 'Week60'
FROM dbo.Tally T
WHERE
T.N <= 60
+0
Hello Cool_Br33ze, 谢谢。但是,您如何加入Tally表以便能够在您的where子句中使用它? – dLight
+0
@dLight我没有加入Tally表,但是从中选择N(棕色),并在'DATEADD'函数中使用它。理货是避免使用CURSOR的好方法 –
相关问题
- 1. 从sql server中动态获取数据
- 2. 通过sql和php获取数据周
- 3. 数据从SQL Server获取在VBA
- 4. 增量周数在SQL Server
- 5. SQL Server在嵌套的JSON数据结构中获取数据
- 6. SQL Server - 给定周数,在一周内获取第一个日期?
- 7. SQL Server:如何从动态多个表中获取数据?
- 8. 在SQL Server 2005中分割数周
- 9. 获取在SQL Server 2005中
- 10. 获取在SQL Server
- 11. VBA从SQL Server获取数据
- 12. 从SQL Server数据库获取信息
- 13. 使用ADO.NET从SQL Server获取数据
- 14. 从SQL Server获取数据库列表
- 15. 从SQL Server获取新数据
- 16. 在SQL Server中在20:00和05:00之间获取数据
- 17. 从SQL Server数据库获取数据到标签中
- 18. 从SQL Server数据库中获取数据集
- 19. 在函数内执行动态SQL时获取错误(SQL Server)?
- 20. PHP sql server获取行数
- 21. 从我的SQL中获取XML SQL Server 2005数据
- 22. 在SQL Server中获取每周给定的一周数,月份数和年份的日期范围
- 23. 获取在SQL Server中提供的数据库名称2014
- 24. 在SQL Server中获取所有数据库大小的总和
- 25. 在sql server中按月份和日期获取数据
- 26. 在SQL Server 2005中获取未完成的事务数据
- 27. 如何使用sql server动态获取数据?
- 28. 如何从滚动数据库中获取数据?
- 29. 如何根据SQL Server 2012中的日期字段获取“第2周”
- 30. SQL Server数据提取
向我们展示一些代码,你的努力。你如何定义一个滚动周?从一周的某一天开始? – Tanner
滚动周应该是我的where子句中的数据范围,但是每次查询运行时,它都会返回65周范围内的数据等 – dLight