Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 форматирование даты 0001-01-01 00:00:00.0  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
В БД терадата есть значения вида 0001-01-01 00:00:00.0 и нормальных дат вида 2018-09-01 00:00:00.0 в столбце формата timestamp. при перезагрузке данных в ms sql server через oracle data integrator в
столбец формата datetime2 возникает ошибка ODI-30038: OS command returned 1. Error details are [].

как выяснилось данные 0001-01-01 00:00:00.0 не подходят для вставки. пробовал их расписать кейсами
case
when begin_dt='0001-01-01 00:00:00.0' then null else begin_dt
end

или использовать convert

ничего не подходит

Как можно это исправить? Т.е. сами данные вида 0001-01-01 00:00:00.0 не нужны и их можно заменить на null или другие значения
13 сен 19, 10:42    [21970155]     Ответить | Цитировать Сообщить модератору
 Re: форматирование даты 0001-01-01 00:00:00.0  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
1. В MSSQL тип TIMESTAMP - это не дата и не время.
2. Почему в MSSQL у меня работает это:
DECLARE @D DATETIME2='00010101';
DECLARE @T TABLE(D DATETIME2);
INSERT @T(D) VALUES(@D);
SELECT * FROM @T;
???
13 сен 19, 10:50    [21970163]     Ответить | Цитировать Сообщить модератору
 Re: форматирование даты 0001-01-01 00:00:00.0  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Нужен NULL вместо '00010101'?
DECLARE @D DATETIME2='00010101';
DECLARE @T TABLE(D DATETIME2);
INSERT @T(D) VALUES(NULLIF(@D,'00010101'));
SELECT * FROM @T;
13 сен 19, 10:52    [21970165]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить