首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server中获取滚动周数据

在Server中获取滚动周数据
EN

Stack Overflow用户
提问于 2017-10-19 09:07:18
回答 2查看 902关注 0票数 0

我希望使用SQL查询获得70周、65周和60周(单独)数据。我知道如何在几年或几个月内做到这一点,但如何获得65周的滚动数据等等?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-19 09:31:58

如果我正确地理解了你,你想知道一次约会的时间跨度是多少周,比如说从2016-01-01到2017-01-14。

在sql server中,您可以像so convert(int,DateColumn)一样将日期转换为int (从1900年到01-01天)。

因此,您可以简单地将日期转换为int,减去,然后除以7。

例如

2016-01-01 = 42368

2017年-01-14= 42747

(42747 - 42368) /7= 54

sql查询如下所示:

代码语言:javascript
复制
select (convert(int,GETDATE()) - convert(int,DateColumn)) / 7  as WeeksAgo  from Table

用于where语句以获得最后65周:

代码语言:javascript
复制
select * from Table where ((convert(int,GETDATE()) - convert(int,DateColumn)) / 7) < 65
票数 2
EN

Stack Overflow用户

发布于 2017-10-19 09:26:27

这个问题没什么可说的,但你可以用一个统计表

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46826360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档