SQL и Google Charts - с учетом ряда дат, шкалы дат - PullRequest
0 голосов
/ 12 апреля 2011

Я использую Google Charts для создания графиков, и это работает хорошо.Единственная проблема, с которой я сталкиваюсь - это когда у меня большой диапазон дат.Моя ось 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

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

1 Ответ

0 голосов
/ 13 апреля 2011

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

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

...