powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразовании в DATETIME
25 сообщений из 29, страница 1 из 2
Преобразовании в DATETIME
    #39992304
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, друзья!
Обращаюсь к Вам за помощь.
Подскажи пожалуйста как мне можно преобразовать тип данных в DATETIME в столбцах 'Дата отключения' и 'Дата восстановления'.
В настоящий момент это varchar (текстовое представление). К большому сожалению полистав и перечитав большое количество источников информации у меня ничего не вышло с функцией convert

Есть у меня запрос такого вида:

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT se_upload_off.OBJ_FIL as 'Филиал', se_upload_off.OBJ_PO as 'ПО', se_upload_off.OBJ_RES_kuem as 'РЭС', 
se_upload_off.OBJ_NM as 'Объект', se_upload_off.CTG_NM as 'Потребитель', se_upload_off.OBJ_CATEG as 'Категория', 
se_upload_off.CONTRACT_NM as 'Номер договора', se_upload_off.OBJ_ADDR as 'Адрес объекта' , se_supa_dg.modifyutc as 'Дата изменения в ДЖ',
se_supa_dg.dat as 'Дата отключения', se_supa_dg.datvplan as 'Дата восстановления', 
se_supa_dg.vidotkl 'Тип события', se_supa_dg.onobkod 'Объект события', 
se_upload_off.email 'Эл. почта', se_upload_off.phone as 'Телефон' 
FROM se_upload_off, se_supa_dg



На выходе получаю таблицу:
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992305
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chasovoy96,
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992309
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
cast(Столбец as datetimeoffset)
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992315
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm, прошу прощения а можно пожалуйста уточнить в моем случае это cast(se_supa_dg_dat as datetimeoffset) ?
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992329
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Код: sql
1.
cast(Столбец as datetimeoffset)



Увы T гадит...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare @str varchar(128) = '2020-08-25 18:13:27.9000000 +05:00'
select @str, cast(@str as datetimeoffset ), convert(datetimeoffset, @str)
--2020-08-25 18:13:27.9000000 +05:00                                                                                               2020-08-25 18:13:27.9000000 +05:00 2020-08-25 18:13:27.9000000 +05:00

--(1 row(s) affected)



declare @str1 varchar(128) = '2020-08-25T18:13:27.9000000 +05:00'
select @str1, cast(@str1 as datetimeoffset ), convert(datetimeoffset, @str1)

--Msg 241, Level 16, State 1, Line 5
--Conversion failed when converting date and/or time from character string.
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992336
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Увы T гадит...
Код: sql
1.
declare @str1 varchar(128) = '2020-08-25T18:13:27.9000000 +05:00'

И где у ТС'а данные именно в таком формате?

Код: sql
1.
2.
3.
4.
select
 d.s, cast(d.s as datetimeoffset), cast(switchoffset(d.s, datename(tzoffset, sysdatetimeoffset())) as datetime)
from
 (select '2020-08-25T18:13:27+05:00') d(s);
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992342
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chasovoy96,


так?
Код: sql
1.
select parse('2020-08-25T18:13:27+05:00' as smalldatetime using 'ru-ru')
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992439
rozen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот формат даты-времени хорошо внутри JSON/XML распознаётся. Можно собрать строчку с json и запустить ее в openjson с явной типизацией в секции with
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992483
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, ,благодарю за ответ, только вы не могли бы пожалуйста подсказать куда вставлять данный запрос

поcле FROM?


Select FIL, OBJ, RES
from upload, dg

declare @str varchar(128) = '2020-08-25 18:13:27.9000000 +05:00'
select @str, cast(@str as datetimeoffset ), convert(datetimeoffset, @str)

declare @str1 varchar(128) = '2020-08-25T18:13:27.9000000 +05:00'
select @str1, cast(@str1 as datetimeoffset ), convert(datetimeoffset, @str1)


а после условие where?
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992485
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm, сделал вот так:

declare @str varchar(128) = '2020-08-26T08:00:00 +05:00'
select @str, cast(@str as datetimeoffset ), convert(datetimeoffset, @str)
declare @str1 varchar(128) = '2020-08-26T08:00:00 +05:00'
select @str1, cast(@str1 as datetimeoffset ), convert(datetimeoffset, @str1)

SELECT se_upload_off.OBJ_FIL as 'Филиал', se_upload_off.OBJ_PO as 'ПО', se_upload_off.OBJ_RES_kuem as 'РЭС',
se_upload_off.OBJ_NM as 'Объект', se_upload_off.CTG_NM as 'Потребитель', se_upload_off.OBJ_CATEG as 'Категория',
se_upload_off.CONTRACT_NM as 'Номер договора', se_upload_off.OBJ_ADDR as 'Адрес объекта' , se_supa_dg.modifyutc as 'Дата изменения в ДЖ',
se_supa_dg.dat as 'Дата отключения', se_supa_dg.datvplan as 'Дата восстанолвения',
se_supa_dg.vidotkl 'Тип события', se_supa_dg.onobkod 'Объект события',
se_upload_off.email 'Эл. почта', se_upload_off.phone as 'Телефон'
FROM se_upload_off, se_supa_dg
WHERE se_upload_off.F_OBJ_ID = se_supa_dg.eso_id
and se_supa_dg.predpr in ('33855301', '33855302', '33855303', '33855304', '33855305', '338555306')
and se_supa_dg.modifyutc >= DATEADD(hour, 8, cast(cast(DATEADD(day, -1, GETDATE()) as date)as datetime))
and se_supa_dg.dat > GETDATE()
order by se_supa_dg.dat

выходит ошибка:
Conversion failed when converting date and/or time from character string.
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992488
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chasovoy96
aleks222, ,благодарю за ответ, только вы не могли бы пожалуйста подсказать куда вставлять данный запрос


а после условие where?


Это не ответ. Это была дискуссия...

Как-то так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT se_upload_off.OBJ_FIL as 'Филиал', se_upload_off.OBJ_PO as 'ПО', se_upload_off.OBJ_RES_kuem as 'РЭС', 
se_upload_off.OBJ_NM as 'Объект', se_upload_off.CTG_NM as 'Потребитель', se_upload_off.OBJ_CATEG as 'Категория', 
se_upload_off.CONTRACT_NM as 'Номер договора', se_upload_off.OBJ_ADDR as 'Адрес объекта' , se_supa_dg.modifyutc as 'Дата изменения в ДЖ'

, cast( replace(se_supa_dg.dat, 'T', ' ') as datetimeoffset) as 'Дата отключения'

, se_supa_dg.datvplan as 'Дата восстанолвения', 
se_supa_dg.vidotkl 'Тип события', se_supa_dg.onobkod 'Объект события', 
se_upload_off.email 'Эл. почта', se_upload_off.phone as 'Телефон' 
FROM se_upload_off, se_supa_dg
WHERE se_upload_off.F_OBJ_ID = se_supa_dg.eso_id
and se_supa_dg.predpr in ('33855301', '33855302', '33855303', '33855304', '33855305', '338555306')
and se_supa_dg.modifyutc >= DATEADD(hour, 8, cast(cast(DATEADD(day, -1, GETDATE()) as date)as datetime)) 
and se_supa_dg.dat > GETDATE()
order by se_supa_dg.dat
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992492
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

Благодарю за всю помощь и ответ!
Вот только что-то не ладиться у меня...
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992494
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
SELECT top(10) 
dat
, replace( dat, 'T', ' ' )  as mod_dat
, try_cast( replace( dat, 'T', ' ' ) as datetimeoffset ) as 'Дата отключения'
FROM se_supa_dg
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992497
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, Попробовал сделать вот так:

SELECT se_upload_off.OBJ_FIL as 'Филиал', se_upload_off.OBJ_PO as 'ПО', se_upload_off.OBJ_RES_kuem as 'РЭС',
se_upload_off.OBJ_NM as 'Объект', se_upload_off.CTG_NM as 'Потребитель', se_upload_off.OBJ_CATEG as 'Категория',
se_upload_off.CONTRACT_NM as 'Номер договора', se_upload_off.OBJ_ADDR as 'Адрес объекта' , se_supa_dg.modifyutc as 'Дата изменения в ДЖ'

, replace( se_supa_dg.dat, 'T', ' ' ) as mod_dat
, try_cast( replace( dat, 'T', ' ' ) as datetimeoffset ) as 'Дата отключения'

, se_supa_dg.datvplan as 'Дата восстановления',
se_supa_dg.vidotkl 'Тип события', se_supa_dg.onobkod 'Объект события',
se_upload_off.email 'Эл. почта', se_upload_off.phone as 'Телефон'
FROM se_upload_off, se_supa_dg
WHERE se_upload_off.F_OBJ_ID = se_supa_dg.eso_id
and se_supa_dg.predpr in ('33855301', '33855302', '33855303', '33855304', '33855305', '338555306')
and se_supa_dg.modifyutc >= DATEADD(hour, 8, cast(cast(DATEADD(day, -1, GETDATE()) as date)as datetime))
and se_supa_dg.dat > GETDATE()
order by se_supa_dg.dat



Только ошибка к сожалению сохраняется, видимо где то ошибся
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992502
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполни запрос, страдалец и покажи результат

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT top(10) 
dat
, replace( dat, 'T', ' ' )  as mod_dat
--, try_cast( replace( dat, 'T', ' ' ) as datetimeoffset ) as 'Дата отключения'
FROM se_supa_dg


select @@version
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992503
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chasovoy96,

вероятная, у Вас какая-то старая версия сервера.
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992504
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

Вот так:
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992509
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
select @@version
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992510
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Версия - 2008 R2
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992512
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chasovoy96,
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992513
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chasovoy96
Владислав Колосов,

Версия - 2008 R2


Ну, с этого надо начинать.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT top(10) 
dat
, replace( dat, 'T', ' ' )  as mod_dat
FROM se_supa_dg

SELECT top(10) 
dat
, replace( dat, 'T', ' ' )  as mod_dat
, cast( replace( dat, 'T', ' ' ) as datetimeoffset ) as 'Дата отключения'
FROM se_supa_dg
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992516
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, А вот рабооотает :)
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992519
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
SELECT --top(10) 
 cast( replace( dat, 'T', ' ' ) as datetimeoffset ) as 'Дата отключения'
FROM se_supa_dg


будем надеяться, что таблица не слишком велика...
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992522
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, очень благодарен вам за терпение и желание помочь.
Строк в таблице 175904
...
Рейтинг: 0 / 0
Преобразовании в DATETIME
    #39992524
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривых дат нет. Дерзайте.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразовании в DATETIME
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]