Привет я делаю некоторое преобразование данных от PostgreSQL до Microsoft SQL Server. До сих пор это имеет, все подходили, и у меня почти есть все выполнение сценария дампа базы данных. Существует только одна вещь, которая теперь испорчена: даты.
Даты выводятся к формату строки. Это два формата в качестве примера, которые я видел до сих пор: '2008-01-14 12:00:00'
и более точное '2010-04-09 12:23:45.26525'
Я хотел бы regex (или набор regexs), что я мог работать так, чтобы заменил их SQL Server совместимые даты. Кто-либо знает, как я могу сделать это?
Первый совместим с 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)
Для более ранней версии вы можете использовать подстроку
, чтобы сократить неустранимую точность:
select cast(substring('2010-04-09 12:23:45.26525',1,23) as datetime)
Для regex, чтобы удалить любые дополнительные цифры (с использованием синтаксиса регулярных выражений Perl):
(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3})\d*
И заменить на:
$1
Что соответствует части регулярного выражения между скобками ()
.