我希望使用SQL查询获得70周、65周和60周(单独)数据。我知道如何在几年或几个月内做到这一点,但如何获得65周的滚动数据等等?
发布于 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查询如下所示:
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发布于 2017-10-19 09:26:27
这个问题没什么可说的,但你可以用一个统计表
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 <= 60https://stackoverflow.com/questions/46826360
复制相似问题