SQL和谷歌图表 - 给定一系列的日期,比例日期范围
问题描述:
我使用谷歌图表来创建一些图表,它运行良好。我遇到的唯一问题是当我有很大的日期范围。我的X轴显示一系列日期。 1周和2周(仅限工作日,所以我有5或10个日期)是正常的,但是当我开始进入月份范围时,所有的日期都相互重叠并且不可读。理想情况下,对于任何超过2周的任何事情,我想获得10个最重要的日期。例如,如果我的系列是从6/1到7/15的所有日期,那么我想让图表上的X轴显示如下:SQL和谷歌图表 - 给定一系列的日期,比例日期范围
6/1 | 6/5 | 6/10 | 6/15 | 6/20 | 6/25 | 6/30 | 7/5 | 7/10 | 7/15
使用谷歌图表,你必须指定你的一系列数据,所以我不能只提供一个开始和结束日期,并适当扩展。仅供参考 - 我正在使用SQL Server存储过程来获取我的数据,所以我希望能够计算数据库端的日期。
答
好吧我明白你的要求,这里是一段代码,它将形成一个由“;”分开的字符串。您可以从SQL Server SP返回!
begin
declare @dt1 as smalldatetime
declare @dt2 as smalldatetime
declare @intDays as int
declare @curDt as smalldatetime
declare @interV as int
declare @outText as varchar(1000)
set @dt1 = '6/1/2011'
set @dt2 = '7/15/2011'
set @interv = 10
set @intdays = datediff(dd,@dt1,@dt2)/@interv
set @curDt = @dt1
set @outText = ''
while (@curdt < @dt2)
begin
set @outText = @outText + CONVERT(VARCHAR(8), @curdt, 1) + ';'
set @curdt = dateadd(dd, @interv, @curdt)
end
if @curdt >= @dt2
set @outText = @outText + CONVERT(VARCHAR(8), @dt2, 1) + ';'
set @outText = substring(@outText, 1, len(@outText)-1)
print @outtext
end
@ DT1和DT2 @是开始和结束日期,您可以与您的局部变量替换。 @outText是具有值的字符串。
让我知道如果您有任何问题,或者你想这个作为一个功能/程序!