как использовать datetime2 как datetime

Я пытаюсь преобразовать datetime2 в datetime, чтобы создать стандарт между различными источниками, используя только SQL или SSIS В качестве примера возьмем следующий SQL-запрос:

SELECT CAST(offer_start_date AS datetime)
FROM [ODS].[macaclient_offers]

Я получаю следующую ошибку: 'Явное преобразование типа данных datetime2 в метку времени не допускается.'

кроме того, мне удалось преобразовать datetime2 в date с помощью простого приведения.

Как правильно преобразовать datetime2 в datetime с помощью SQL Server 2008 или SSIS?

gilibi

3 ответов


вы бросаете в timestamp в коде. Изменить на datetime.

SELECT CAST(offer_start_date AS datetime) FROM [ODS].[macaclient_offers]

ваш пример инструкции select пытается отбросить offer_start_date в отметку времени, а не datetime.

Если вам нужно значение метки времени из столбца datetime2, вы можете использовать функцию DatePart для извлечения частей даты и создания ее самостоятельно.

например:

declare @date datetime2
set @date = GETUTCDATE()

select @date,
       DATEPART(hour, @date),
       DATEPART(minute, @date),
       DATEPART(second, @date)

MSDN ссылка на DatePart


OK, мне удалось выполнить это с помощью компонента преобразования данных SSIS. Я узнал, что могу использовать DT_DBTIME2 или DT_DBTIME

спасибо всем, кто помог