З огляду на наступні компоненти
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
Який найкращий спосіб їх поєднання для отримання DATETIME2(7)
результату зі значенням '2013-10-13 23:59:59.9999999'
?
Нижче наведено деякі речі, які не працюють.
SELECT @D + @T
Дата типу даних операнду недійсна для оператора додавання.
SELECT CAST(@D AS DATETIME2(7)) + @T
Тип даних операнду datetime2 недійсний для оператора додавання.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
Функція dateiff призвела до переповнення. Кількість розділів дат, що розділяють два екземпляри дати / часу, занадто велика. Спробуйте використовувати dateiff з менш точною датою.
* Переповнення можна уникнути в базах даних Azure SQL та SQL Server 2016, використовуючи DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
Типи даних дата та час несумісні в операторі додавання.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
Повертає результат, але втрачає точність
2013-10-13 23:59:59.997