Как преобразовать Sybase ASE smalldatetime / datetime / bigdatetime в стандартный формат - PullRequest
0 голосов
/ 07 марта 2020

Мне нужно было переместить некоторый большой объем данных (100 Мс строк) из базы данных Sybase в базу данных MySQL.

Одна из проблем, с которыми я столкнулся, - это преобразование столбцов типа smalldatetime, datetime и bigdatetime в формате, который MySQL будет легко понять.

После долгих усилий и почти после того, как я разочаровался в поиске решения, которое не требовало бы некоторого Perl массирования данных datetime, я нашел очень приемлемое решение.

Это не соответствует полному стандарту ISO 8601, , но оно очень близко и для моей цели работает отлично.

1 Ответ

2 голосов
/ 07 марта 2020

Ответ в том, что я нашел секрет (по крайней мере, недокументированный, насколько мне известно) Стиль Sybase convert . Стиль: 140 , и он выводит формат такого типа независимо от формата даты и времени:

select convert(char, convert(smalldatetime, getdate()), 140);
 2020-03-06 21:08:00.000000

select convert(char, convert(datetime, getdate()), 140);
 2020-03-06 21:08:21.173000

select convert(char, convert(bigdatetime, getdate()), 140);
 2020-03-06 21:08:30.532000

select convert(char, convert(bigdatetime, "2020-03-06 21:08:30.123456"), 140);
 2020-03-06 21:08:30.123456
...