Помогите конвертировать даты PostgreSQL в даты SQL Server - PullRequest
1 голос
/ 27 мая 2010

Здравствуйте, я делаю некоторые преобразования данных из PostgreSQL в Microsoft SQL Server. Пока все прошло хорошо, и у меня почти запущен весь сценарий дампа базы данных. Теперь запуталась только одна вещь: даты.

Даты сбрасываются в строковый формат. Это два примера форматов, которые я видел до сих пор: '2008-01-14 12:00:00' и более точный '2010-04-09 12:23:45.26525'

Я хотел бы использовать регулярное выражение (или набор регулярных выражений), чтобы заменить их датами, совместимыми с SQL Server. Кто-нибудь знает, как я могу это сделать?

1 Ответ

2 голосов
/ 27 мая 2010

Первый совместим с datetime, но второй слишком точный.Он будет соответствовать sqldatetime2, который доступен в SQL Server 2008:

select cast('2008-01-14 12:00:00' as datetime)
,      cast('2010-04-09 12:23:45.26525' as datetime2)

Для более ранней версии вы можете использовать substring, чтобы отрубить невозможную точность:

select cast(substring('2010-04-09 12:23:45.26525',1,23) as datetime)

Для регулярного выражения, чтобы удалить любые дополнительные цифры (используя синтаксис Perl Regex):

(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3})\d*

И заменить на:

$1

Что соответствует части регулярного выражения в () скобках.

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