다음과 같은 구성 요소가 주어지면
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는 add 연산자에 유효하지 않습니다.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
datediff 함수로 인해 오버 플로우가 발생했습니다. 두 개의 날짜 / 시간 인스턴스를 분리하는 날짜 부분 수가 너무 큽니다. 덜 정확한 datepart와 함께 datediff를 사용하십시오.
*을 사용하여 Azure SQL Database 및 SQL Server 2016에서 오버플로를 피할 수 있습니다 DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
날짜 유형 및 시간 데이터 유형은 add 연산자에서 호환되지 않습니다.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
결과를 반환하지만 정밀도를 잃음
2013-10-13 23:59:59.997