SQL и Google Charts - Учитывая ряд дат, масштабируйте диапазон дат

Я использую Google Charts для создания графиков, и он работает хорошо. Единственная проблема, с которой я сталкиваюсь, это когда у меня большой диапазон дат. Моя ось X отображает ряд дат. Это нормально для 1 и 2 недель (только будние дни, поэтому у меня либо 5, либо 10 дат), однако, когда я начинаю входить в диапазон месяцев, все даты накладываются друг на друга, и это нечитаемо. В идеале, для чего-либо более 2 недель, я хотел бы получить 10 наиболее значимых дат. Так, например, если в моей серии все даты с 1 июня по 15 июля, я бы хотел, чтобы ось X на графике отображала что-то вроде:

6/1 | 6/5 | 6/10 | 6/15 | 6/20 | 6/25 | 6/30 | 7/5 | 7/10 | 7/15

В Google Charts вы должны указать свою серию данных, поэтому я не могу просто указать дату начала и окончания и соответствующим образом масштабировать ее. К сведению: я использую хранимую процедуру SQL Server для получения своих данных, поэтому я хотел бы иметь возможность вычислять даты на стороне базы данных.


person bgeveritt    schedule 11.04.2011    source источник


Ответы (1)


Хорошо, я понимаю ваше требование, и вот фрагмент кода, который сформирует строку, разделенную знаком «;». который вы можете вернуть из 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 — это строка со значениями.

Дайте мне знать, если у вас есть какие-либо вопросы или вы хотите, чтобы это было функцией/процедурой!

person Balaji V    schedule 13.04.2011