Форматировать даты только из массива JSON - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть столбец со значениями массива, запрашиваемыми с JSON_QUERY.

Набор результатов будет выглядеть так:

My_Column

["2017-06-13T07:00:00","2017-06-13T12:00:00","2017-06-13T17:00:00"]  

["2017-05-04T06:00:00","2017-05-04T16:00:00","2017-05-04T23:00:00"]  

["2017-05-04T04:00:00","2017-05-04T11:00:00","2017-05-04T16:00:00"]  

["2017-05-04T07:00:00","2017-05-04T12:00:00","2017-05-04T17:00:00"]  

["2017-05-26T08:00:00","2017-05-26T12:00:00","2017-05-26T16:00:00","2017-05-26T20:00:00"]  

Как отформатироватьстолбец для того, чтобы получить только времена, разделенные запятой?

My_Column

00:00, 12:00, 17:00  
06:00, 16:00, 23:00  
04:00, 11:00, 16:00  

и т. Д.

1 Ответ

0 голосов
/ 10 мая 2018

Вы можете создать пользовательскую функцию (UDF), которая выполняет преобразование:

if object_id('FxJsonDateConverter') is not null
    drop function FxJsonDateConverter
go

create function FxJsonDateConverter(@serializedDateTime varchar(max))
    RETURNS varchar(max) AS
    BEGIN
        declare @result varchar(max) = ''
        declare @dates table(json_date time)

        insert into @dates
        select CONVERT(time,[value]) 
        from string_split(replace(replace(replace(@serializedDateTime, '"',''), ']',''), '[',''),',')

        select @result =   @result +  ', '+ left(cast(json_date as varchar(max)),5) 
        from @dates
        return RIGHT(@result, len(@result)-2)
    end
go

declare @your_table table (your_column varchar(max))

insert into @your_table
 values
('["2017-06-13T07:00:00","2017-06-13T12:00:00","2017-06-13T17:00:00"]'  ),
('["2017-05-04T06:00:00","2017-05-04T16:00:00","2017-05-04T23:00:00"]'  ),
('["2017-05-04T04:00:00","2017-05-04T11:00:00","2017-05-04T16:00:00"]'  ),
('["2017-05-04T07:00:00","2017-05-04T12:00:00","2017-05-04T17:00:00"]'  ),
('["2017-05-26T08:00:00","2017-05-26T12:00:00","2017-05-26T16:00:00","2017-05-26T20:00:00"]' )

select your_column, dbo.FxJsonDateConverter(your_column) as only_time 
from @your_table

Результаты:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...