datetimeoffset(Transact-SQL)
표준 시간대를 인식하며 24시간제를 기준으로 하는 시간과 결합된 날짜를 정의합니다.
모든 Transact-SQL 날짜/시간 데이터 형식 및 함수에 대한 개요는 날짜 및 시간 데이터 형식 및 함수(Transact-SQL)를 참조하십시오. 날짜/시간 데이터 형식 및 함수에 대한 자세한 내용과 일반적인 예는 날짜 및 시간 데이터 사용을 참조하십시오.
datetimeoffset 설명
속성 |
값 |
---|---|
구문 |
datetimeoffset [ (fractional seconds precision) ] |
용도 |
DECLARE @MyDatetimeoffset datetimeoffset(7) CREATE TABLE Table1 ( Column1 datetimeoffset(7) ) |
하위 클라이언트에 대해 사용되는 기본 문자열 리터럴 형식 |
YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm] 자세한 내용은 날짜 및 시간 데이터 사용의 "하위 클라이언트에 대한 이전 버전과의 호환성" 섹션을 참조하십시오. |
날짜 범위 |
0001-01-01부터 9999-12-31까지 서기 1년 1월 1일부터 9999년 12월 31일까지 |
시간 범위 |
00:00:00부터 23:59:59.9999999까지 |
표준 시간대 오프셋 범위 |
|
요소 범위 |
YYYY는 0001에서 9999 사이에 속하는 4자리 숫자로, 연도를 나타냅니다. MM은 01에서 12 사이에 속하는 두 자리 숫자로, 지정한 연도의 월을 나타냅니다. DD는 월에 따라 01에서 31 사이에 속하는 두 자리 숫자로, 지정한 월의 일을 나타냅니다. hh는 00에서 23 사이에 속하는 두 자리 숫자로, 시를 나타냅니다. mm은 00에서 59 사이에 속하는 두 자리 숫자로, 분을 나타냅니다. ss는 00에서 59 사이에 속하는 두 자리 숫자로, 초를 나타냅니다. n*은 0에서 9999999 사이에 속하는 0부터 7 자리의 숫자로, 소수 자릿수 초를 나타냅니다. hh는 -14에서 14 사이에 속하는 두 자리 숫자입니다. mm은 00에서 59 사이에 속하는 두 자리 숫자입니다. |
문자 길이 |
최소 26자리(YYYY-MM-DD hh:mm:ss {+|-}hh:mm)부터 최대 34자리(YYYY-MM-DD hh:mm:ss.nnnnnnn {+|-}hh:mm)까지 |
전체 자릿수, 소수 자릿수 |
지정한 소수 자릿수결과(전체 자릿수, 소수 자릿수)열 길이(바이트)소수 자릿수 초의 전체 자릿수
datetimeoffset (34,7)107
datetimeoffset(0) (26,0)80-2
datetimeoffset(1) (28,1)80-2
datetimeoffset(2) (29,2)80-2
datetimeoffset(3) (30,3)93-4
datetimeoffset(4) (31,4)93-4
datetimeoffset(5) (32,5)105-7
datetimeoffset(6) (33,6)105-7
datetimeoffset(7) (34,7)105-7
|
저장소 크기 |
초 소수 부분 자릿수 기본값 100ns를 기준으로 10바이트(고정)가 기본값입니다. |
정확도 |
100나노초 |
기본값 |
1900-01-01 00:00:00 00:00 |
달력 |
일반 달력 |
사용자 정의 초 소수 부분 자릿수 |
예 |
표준 시간대 오프셋 인식 및 유지 |
예 |
일광 절약 시간제 인식 |
아니요 |
datetimeoffset에 대해 지원되는 문자열 리터럴 형식
다음 표에는 datetimeoffset에 대해 지원되는 ISO 8601 문자열 리터럴 형식이 나와 있습니다. datetimeoffset의 날짜 및 시간 부분에 대한 영문자, 숫자, 시간 및 구분되지 않은 형식에 대한 내용은 date(Transact-SQL) 및 time(Transact-SQL)을 참조하십시오.
ISO 8601 |
설명 |
---|---|
YYYY-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm] |
이 두 가지 형식은 SET LANGUAGE 및 SET DATEFORMAT 세션 로캘 설정의 영향을 받지 않습니다. datetimeoffset과 datetime 부분 사이에는 공백이 허용되지 않습니다. |
YYYY-MM-DDThh:mm:ss[.nnnnnnn]Z (UTC) |
ISO 정의에 따른 이 형식은 datetime 부분이 UTC(Coordinated Universal Time)로 표현되어야 함을 나타냅니다. 예를 들어 1999-12-12 12:30:30.12345 -07:00는 1999-12-12 19:30:30.12345Z로 표시되어야 합니다. |
표준 시간대 오프셋
표준 시간대 오프셋은 time 또는 datetime 값에 대한 UTC의 표준 시간대 오프셋을 지정합니다. 표준 시간대 오프셋은 [+|-] hh:mm:으로 나타낼 수 있습니다.
hh는 0에서 14 사이에 속하는 두 자리 숫자로, 표준 시간대 오프셋의 시간(시간)을 나타냅니다.
mm은 00에서 59 사이에 속하는 두 자리 숫자로, 표준 시간대 오프셋의 추가 시간(분)을 나타냅니다.
+(더하기) 또는 –(빼기)는 표준 시간대 오프셋의 필수 기호입니다. 이는 현지 시간을 가져오기 위해 UTC 시간에서 표준 시간대 오프셋을 더했는지 또는 뺐는지를 나타냅니다. 올바른 표준 시간대 오프셋 범위는 -14:00에서 +14:00 사이입니다.
표준 시간대 범위는 XSD 스키마 정의에 대한 W3C XML 표준을 따르며 12:59에서 +14:00 사이인 SQL 2003 표준 정의와 약간 다릅니다.
선택적 유형 매개 변수인 fractional seconds precision은 초의 소수 부분의 자릿수를 지정합니다. 이 값은 0에서 7 사이의 정수입니다(100나노초). 기본 fractional seconds precision은 100ns(초의 소수 부분의 자릿수가 7자리임)입니다.
데이터는 데이터베이스에 저장되며 UTC에서와 마찬가지로 서버에서 처리, 비교, 정렬 및 인덱싱됩니다. 표준 시간대 오프셋은 검색할 수 있도록 데이터베이스에 유지됩니다.
지정된 표준 시간대 오프셋은 DST(일광 절약 시간제)를 인식하고, DST 기간에 있는 모든 datetime에 대해 조정할 수 있는 것으로 간주됩니다.
datetimeoffset 형식의 경우 UTC 및 영구 또는 변환 표준 시간대 오프셋에 대한 현지 datetime 값에 대해 삽입, 업데이트, 산술, 변환 또는 할당 작업 중 유효성 검사가 수행됩니다. 잘못된 UTC나 영구 또는 변환 표준 시간대 오프셋에 대한 현지 datetime 값이 인식되면 잘못된 값 오류가 발생합니다. 예를 들어 9999-12-31 10:10:00는 UTC에서 유효하지만 표준 시간대 오프셋 +13:50에 대한 현지 시간에서는 오버플로됩니다.
예
다음 예에서는 문자열을 각각 date 및 time 데이터 형식으로 캐스팅한 결과를 비교합니다.
SELECT
CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date'
,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS
'smalldatetime'
,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime'
,CAST('2007-05-08 12:35:29.1234567+12:15' AS datetime2(7)) AS
'datetime2'
,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS
'datetimeoffset'
,CAST('2007-05-08 12:35:29.1234567+12:15' AS datetimeoffset(7)) AS
'datetimeoffset IS08601';
결과 집합은 다음과 같습니다.
데이터 형식 |
출력 |
---|---|
Time |
12:35:29. 1234567 |
Date |
2007-05-08 |
Smalldatetime |
2007-05-08 12:35:00 |
Datetime |
2007-05-08 12:35:29.123 |
datetime2 |
2007-05-08 12:35:29. 1234567 |
Datetimeoffset |
2007-05-08 12:35:29.1234567 +12:15 |