powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразование типа данных DATETIME
4 сообщений из 4, страница 1 из 1
Преобразование типа данных DATETIME
    #39991876
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, друзья!
Прошу Вас пожалуйста подсказать может быть кто-то сталкивался с подобным вопросом.
В моей таблице хранятся текстовые представления дат, а мне необходимо их преобразовать в тип DATETIME, что бы использовать функцию даты и времени DATEADD.

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


Конкурс экстрасексов?
Примерчик бы "текстовые представления дат" из вашей таблички.

PS. А так-то, учи CONVERT().
...
Рейтинг: 0 / 0
Преобразование типа данных DATETIME
    #39991916
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chasovoy96,
1. Вначале нужно выяснить, в каком формате хранятся данные в столбце. Предположим это dd.mm.yyyy.
2. Нужно проверить те значения, которые не преобразуются в тип datetime. Сделать это можно так:
Код: sql
1.
2.
3.
Set dateformat dmy; -- См. п.1
Select * from myTable
Where Try_Convert(datetime, Nullif([Поле_с_датой_Varchar], '')) is Null and Nullif([Поле_с_датой_Varchar], '') is not NULL


3. Далее, нужно что-то сделать со значениями, которые не могут быть корректно преобразованы в дату. Например - поправить руками или забить на это.
4. Нужно добавить в таблицу поле, куда будет записано преобразованное значение:
Код: sql
1.
alter table myTable add [Поле_с_датой_datetime] datetime NULL


5. И добавить в него данные:
Код: sql
1.
Update myTable Set [Поле_с_датой_datetime] = Try_Convert(datetime, Nullif([Поле_с_датой_Varchar], ''))


6. Удалить поле [Поле_с_датой_Varchar] и переименовать поле [Поле_с_датой_datetime].
7. Опционально - сделать Alter table rebuild

Недостаток - поле переместится из середины списка столбцов таблицы в конец.
Если это недопустимо - то вариантов много.
От пересоздания таблицы и перезаливки данных, до присвоения всем записям [Поле_с_датой_Varchar] значения NULL, преобразования в datetime, копирования в это поле значения из [Поле_с_датой_datetime], удаление столбца [Поле_с_датой_datetime] и ребилда таблицы.
Только предварительно придется удалить индексы, включающие это поле, и кастомные статистики, а потом создать их вновь.
В общем, будет много шуток, песен и веселья, в зависимости от количества данных, связей и т.д.
Да, чуть не забыл! Нужно также сделать рефреш всех view в базе, где фигурирует указанная таблица.
...
Рейтинг: 0 / 0
Преобразование типа данных DATETIME
    #39991920
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uaggster, очень Вам признателен и благодарен за столь подробный ответ. Сейчас попробую проделать все операции
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразование типа данных DATETIME
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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