2015-07-24 4 views
3

Мне нужно сравнить свойство datetime2, что одна база данных с свойством datetime, что другая база данных, потому что я не нахожу метод для преобразования datetime в datetime2.Как сравнить datetime2 с datetime

Я проверить это предложение:

select CAST(FechaAlta AS datetime) from tutors 

, но возвращают сообщение об ошибке:

Преобразование типа datetime2 данных к типу DateTime данных привело к значению вне-диапазона.

+1

http://stackoverflow.com/a/7393350/1821329 – FutbolFan

ответ

-1

Сначала получите datetime2 и datetime в том же формате datetime. Предполагая, что они оба являются date datatype и вы работаете на Oracle

TO_DATE(TO_CHAR(DATETIME2,'YYYYMMDD HH24:MI:SS')) = TO_DATE(TO_CHAR(DATETIME,'YYYYMMDD HH24:MI:SS')) 
+0

Вопрос помечен тегом [tag: sql-server], а не [tag: oracle]. Сообщение об ошибке также отчетливо отличается от SQL Server. –

2

Тип данных datetime2 имеет более широкий диапазон, чем datetime - datetime2 может содержать любую дату между 0001-01-01 и 9999-12-31, в то время как datetime начинается в 01/01/1753 (есть неясные причины для этого с участием 4-го графа Честерфилда, которые слишком тайны, чтобы войти в этот момент).

Если вы хотите конвертировать Datetime2 в DateTime, вы должны обрабатывать значения вне допустимого диапазона, например:

SELECT CASE WHEN FechaAlta < '1753-01-01' THEN NULL ELSE CAST(FechaAlta AS DateTime) END AS FechaAlta_As_DateTime FROM Tutors 
Смежные вопросы