SQL和Google图表-给定一系列日期,缩放日期范围

SQL和Google图表-给定一系列日期,缩放日期范围,sql,sql-server,database,charts,google-visualization,Sql,Sql Server,Database,Charts,Google Visualization,我用谷歌图表创建了一些图表,效果很好。我唯一的问题是约会范围太大。我的X轴显示一系列日期。1周和2周都可以(只有工作日,所以我有5个或10个约会),但是当我开始进入月份范围时,所有的日期彼此重叠,无法阅读。理想情况下,对于任何超过2周的时间,我都希望得到10个最重要的日期。例如,如果我的系列都是从6/1到7/15的日期,我希望图表上的X轴显示如下内容: 6/1 | 6/5 | 6/10 | 6/15 | 6/20 | 6/25 | 6/30 | 7/5 | 7/10 | 7/15 使用谷歌图表,

我用谷歌图表创建了一些图表,效果很好。我唯一的问题是约会范围太大。我的X轴显示一系列日期。1周和2周都可以(只有工作日,所以我有5个或10个约会),但是当我开始进入月份范围时,所有的日期彼此重叠,无法阅读。理想情况下,对于任何超过2周的时间,我都希望得到10个最重要的日期。例如,如果我的系列都是从6/1到7/15的日期,我希望图表上的X轴显示如下内容:

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声明为smalldatetime
将@dt2声明为smalldatetime
将@intDays声明为int
将@curDt声明为smalldatetime
将@interV声明为int
将@outText声明为varchar(1000)
set@dt1='6/1/2011'
set@dt2='7/15/2011'
在interv=10时设置
设置@intdays=datediff(dd、@dt1、@dt2)/@interv
设置@curDt=@dt1
设置@outText=“”
而(@curdt<@dt2)
开始
设置@outText=@outText+CONVERT(VARCHAR(8),@curdt,1)+';'
设置@curdt=dateadd(dd、@interv、@curdt)
结束
如果@curdt>=@dt2
set@outText=@outText+CONVERT(VARCHAR(8),@dt2,1)+';'
设置@outText=substring(@outText,1,len(@outText)-1)
打印@outtext
结束
@dt1和@dt2是开始和结束日期,可以用局部变量替换@outText是带有值的字符串

如果您有任何问题或希望将此作为功能/程序,请告诉我