Мое намерение - вставить данные из исходной таблицы в целевую таблицу.Исходная таблица имеет столбец datetime2
, а целевая таблица имеет столбец datetime
.Если значение datetime2
не помещается (<год 1753) в поле <code>datetime, оно будет преобразовано в null
.Вот пример
DROP TABLE dbo.test1
--source table
CREATE TABLE dbo.test1 (wday DATETIME2 NULL)
go
INSERT INTO dbo.test1
(wday
)
SELECT '2008-02-01 00:00:00.000'
UNION ALL
SELECT '2009-02-01 00:00:00.000'
UNION ALL
SELECT '0001-02-01 00:00:00.000'
DROP TABLE dbo.test2
--target table
CREATE TABLE dbo.test2 (wday DATETIME NULL)
go
--insert only valid datetime dates, < 1753 will be converted to nulls
INSERT INTO dbo.test2
(wday
)
SELECT CASE WHEN DATEDIFF(YEAR, dbo.test1.wday, GETDATE()) < 111
THEN NULL
ELSE CAST(dbo.test1.wday AS DATETIME)
END
FROM dbo.test1
Код не работает.Также использование datediff
здесь недопустимой логики, как это реализовать?