datetime(Transact-SQL)datetime (Transact-SQL)

적용 대상: 예SQL Server 예Azure SQL Database 예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

소수 자릿수 초가 있는 24시간제 기준의 시간과 결합된 날짜를 정의합니다.Defines a date that is combined with a time of day with fractional seconds that is based on a 24-hour clock.

참고

새 작업에 대해 time, date, datetime2datetimeoffset 데이터 형식을 사용합니다.Use the time, date, datetime2 and datetimeoffset data types for new work. 이러한 데이터 형식은 SQL 표준에 맞는 형식으로,These types align with the SQL Standard. 이식성이 높습니다.They are more portable. time, datetime2datetimeoffset은 초의 정밀도를 높여줍니다.time, datetime2 and datetimeoffset provide more seconds precision. datetimeoffset은 전 세계에 배포되는 애플리케이션에 대해 표준 시간대를 지원합니다.datetimeoffset provides time zone support for globally deployed applications.

datetime 설명datetime Description

속성Property Value
구문Syntax datetimedatetime
사용Usage DECLARE @MyDatetime datetimeDECLARE @MyDatetime datetime

CREATE TABLE Table1(Column1 datetime)CREATE TABLE Table1 ( Column1 datetime )
기본 문자열 리터럴 형식Default string literal formats

(하위 클라이언트에 대해 사용됨)(used for down-level client)
해당 사항 없음Not applicable
날짜 범위Date range 01.01.53부터 31.12.99까지January 1, 1753, through December 31, 9999
시간 범위Time range 00:00:00부터 23:59:59.997까지00:00:00 through 23:59:59.997
표준 시간대 오프셋 범위Time zone offset range 없음None
요소 범위Element ranges YYYY는 1753부터 9999까지의 4자리 숫자로, 연도를 나타냅니다.YYYY is four digits from 1753 through 9999 that represent a year.

MM은 01에서 12 사이에 속하는 두 자리 숫자로, 지정한 연도의 월을 나타냅니다.MM is two digits, ranging from 01 to 12, that represent a month in the specified year.

DD는 월에 따라 01에서 31 사이에 속하는 두 자리 숫자로, 지정한 월의 일을 나타냅니다.DD is two digits, ranging from 01 to 31 depending on the month, that represent a day of the specified month.

hh는 00에서 23 사이에 속하는 두 자리 숫자로, 시를 나타냅니다.hh is two digits, ranging from 00 to 23, that represent the hour.

mm은 00에서 59 사이에 속하는 두 자리 숫자로, 분을 나타냅니다.mm is two digits, ranging from 00 to 59, that represent the minute.

ss는 00에서 59 사이에 속하는 두 자리 숫자로, 초를 나타냅니다.ss is two digits, ranging from 00 to 59, that represent the second.

n*은 0에서 999 사이에 속하는 세 자리 숫자로, 소수 자릿수 초를 나타냅니다.n* is zero to three digits, ranging from 0 to 999, that represent the fractional seconds.
문자 길이Character length 최소 19자리부터 최대 23자리까지19 positions minimum to 23 maximum
스토리지 크기Storage size 8바이트8 bytes
정확도Accuracy .000, .003 또는 .007초 단위로 반올림됩니다.Rounded to increments of .000, .003, or .007 seconds
기본값Default value 1900-01-01 00:00:001900-01-01 00:00:00
달력Calendar 일반 달력(전체 연도 범위를 포함함)Gregorian (Does include the complete range of years.)
사용자 정의 초 소수 부분 자릿수User-defined fractional second precision 아니오No
표준 시간대 오프셋 인식 및 유지Time zone offset aware and preservation 아니오No
일광 절약 시간제 인식Daylight saving aware 아니오No

datetime에 대해 지원되는 문자열 리터럴 형식Supported String Literal Formats for datetime

다음 표에는 datetime에 대해 지원되는 문자열 리터럴 형식이 나와 있습니다.The following tables list the supported string literal formats for datetime. ODBC를 제외하고 datetime 문자열 리터럴은 작은따옴표(')로 묶입니다(예: 'string_literaL').Except for ODBC, datetime string literals are in single quotation marks ('), for example, 'string_literaL'. us_english 환경이 아닌 경우 문자열 리터럴은 N'string_literaL' 형식이어야 합니다.If the environment isn't us_english, the string literals should be in the format N'string_literaL'.

숫자Numeric 설명Description
날짜 형식:Date formats:

[0]4/15/[19]96 -- (mdy)[0]4/15/[19]96 -- (mdy)

[0]4-15-[19]96 -- (mdy)[0]4-15-[19]96 -- (mdy)

[0]4.15.[19]96 -- (mdy)[0]4.15.[19]96 -- (mdy)

[0]4/[19]96/15 -- (myd)[0]4/[19]96/15 -- (myd)

15/[0]4/[19]96 -- (dmy)15/[0]4/[19]96 -- (dmy)

15/[19]96/[0]4 -- (dym)15/[19]96/[0]4 -- (dym)

[19]96/15/[0]4 -- (ydm)[19]96/15/[0]4 -- (ydm)

[19]96/[0]4/15 -- (ymd)[19]96/[0]4/15 -- (ymd)

시간 형식:Time formats:

14:3014:30

14:30[:20:999]14:30[:20:999]

14:30[:20.9]14:30[:20.9]

4am4am

4 PM4 PM
지정된 숫자 월을 사용하여 날짜 데이터를 지정할 수 있습니다.You can specify date data with a numeric month specified. 예를 들어 5/20/97은 1997년 5월 20일을 나타냅니다. 숫자 날짜 형식을 사용할 경우에는 문자열에 슬래시 기호(/), 하이픈(-) 또는 마침표(.)를 구분 기호로 사용하여For example, 5/20/97 represents the twentieth day of May 1997. 년, 월, 일을 지정합니다.When you use numeric date format, specify the month, day, and year in a string that uses slash marks (/), hyphens (-), or periods (.) as separators. 이 문자열은 다음과 같은 형식이어야 합니다.This string must appear in the following form:

number separator number separator number [time] [time]number separator number separator number [time] [time]



언어를 us_english로 설정하면 기본 날짜 순서는 mdy(월, 일, 년)입니다.When the language is set to us_english, the default order for the date is mdy. SET DATEFORMAT 문을 사용하여 날짜 순서를 변경할 수 있습니다.You can change the date order by using the SET DATEFORMAT statement.

SET DATEFORMAT 설정에 따라 날짜 값의 해석 방법이 결정됩니다.The setting for SET DATEFORMAT determines how date values are interpreted. 순서가 설정과 다르면 값이 날짜로 해석되지 않습니다.If the order doesn't match the setting, the values aren't interpreted as dates. 순서가 잘못된 날짜는 범위를 벗어나는 것으로 또는 잘못된 값을 포함하는 것으로 잘못 해설될 수 있습니다.Out-of-order dates may be misinterpreted as out of range or with wrong values. 예를 들어 12/10/08은 DATEFORMAT 설정에 따라 6가지 날짜 중 하나로 해석될 수 있습니다.For example, 12/10/08 can be interpreted as one of six dates, depending on the DATEFORMAT setting. 네 부분으로 된 연도는 년으로 해석됩니다.A four-part year is interpreted as the year.
알파벳Alphabetical 설명Description
Apr[il] [15][,] 1996Apr[il] [15][,] 1996

Apr[il] 15[,] [19]96Apr[il] 15[,] [19]96

Apr[il] 1996 [15]Apr[il] 1996 [15]

[15] Apr[il][,] 1996[15] Apr[il][,] 1996

15 Apr[il][,][19]9615 Apr[il][,][19]96

15 [19]96 apr[il]15 [19]96 apr[il]

[15] 1996 apr[il][15] 1996 apr[il]

1996 APR[IL] [15]1996 APR[IL] [15]

1996 [15] APR[IL]1996 [15] APR[IL]
전체 월 이름으로 지정된 월을 사용하여 날짜 데이터를 지정할 수 있습니다.You can specify date data with a month specified as the full month name. 예를 들어 April 또는 현재 언어에서 정해진 월 약어(Apr)를 사용할 수 있습니다. 쉼표는 선택 사항이며 대문자는 무시됩니다.For example, April or the month abbreviation of Apr specified in the current language; commas are optional and capitalization is ignored.

다음은 알파벳 날짜 형식 사용에 대한 몇 가지 지침입니다.Here are some guidelines for using alphabetical date formats:

1) 날짜 및 시간 데이터는 작은따옴표(')로 묶습니다.1) Enclose the date and time data in single quotation marks ('). 영어 이외의 다른 언어에서는 N'을 사용합니다.For languages other than English, use N'

2) 대괄호로 묶인 문자는 선택 사항입니다.2) Characters that are enclosed in brackets are optional.

3) 연도의 마지막 두 자리만 지정하는 경우 이 값이 두 자리 연도 구분 서버 구성 옵션 구성 구성 옵션 값의 마지막 두 자리보다 작으면 구분 연도와 같은 세기로 간주됩니다.3) If you specify only the last two digits of the year, values less than the last two digits of the value of the Configure the two digit year cutoff Server Configuration Option configuration option are in the same century as the cutoff year. 이 옵션 값보다 크거나 같은 값은 구분 연도 전의 세기로 간주됩니다.Values greater than or equal to the value of this option are in the century that comes before the cutoff year. 예를 들어 two digit year cutoff가 2050(기본값)이면 25는 2025로 해석되고 50은 1950으로 해석됩니다.For example, if two digit year cutoff is 2050 (default), 25 is interpreted as 2025 and 50 is interpreted as 1950. 모호성을 피하려면 4자리 연도를 사용하세요.To avoid ambiguity, use four-digit years.

4) 일이 생략된 경우 해당 월의 첫째 날이 사용됩니다.4) If the day is missing, the first day of the month is supplied.



월을 알파벳 형식으로 지정하면 SET DATEFORMAT 세션 설정이 적용되지 않습니다.The SET DATEFORMAT session setting isn't applied when you specify the month in alphabetical form.
ISO 8601ISO 8601 설명Description
YYYY-MM-DDThh:mm:ss[.mmm]YYYY-MM-DDThh:mm:ss[.mmm]

YYYYMMDD[ hh:mm:ss[.mmm]]YYYYMMDD[ hh:mm:ss[.mmm]]
예:Examples:

1) 2004-05-23T14:25:101) 2004-05-23T14:25:10

2) 2004-05-23T14:25:10.4872) 2004-05-23T14:25:10.487



ISO 8601 형식을 사용하려면 형식에 표시되는 T, 콜론(:) 및 마침표(.)를 포함하는 형식으로 각 요소를 지정해야 합니다.To use the ISO 8601 format, you must specify each element in the format, including the T, the colons (:), and the period (.) that are shown in the format.

대괄호는 초의 소수 구성 요소가 선택 사항임을 나타냅니다.The brackets indicate that the fraction of second component is optional. 시간 구성 요소는 24시간 형식으로 지정됩니다.The time component is specified in the 24-hour format.

T는 datetime 값의 시간 시작 부분을 나타냅니다.The T indicates the start of the time part of the datetime value.

ISO 8601 형식을 사용할 때의 이점은 이 형식이 명확한 사양을 가진 국제 표준이라는 점입니다.The advantage in using the ISO 8601 format is that it is an international standard with unambiguous specification. 또한 이 형식은 SET DATEFORMAT 또는 SET LANGUAGE 설정에 영향을 받지 않습니다.Also, this format isn't affected by the SET DATEFORMAT or SET LANGUAGE setting.
구분되지 않음Unseparated 설명Description
YYYYMMDD hh:mm:ss[.mmm]YYYYMMDD hh:mm:ss[.mmm]
ODBCODBC 설명Description
{ ts '1998-05-02 01:23:56.123' }{ ts '1998-05-02 01:23:56.123' }

{ d '1990-10-02' }{ d '1990-10-02' }

{ t '13:33:41' }{ t '13:33:41' }
ODBC API는 이스케이프 시퀀스를 정의하여 ODBC가 타임스탬프 데이터를 호출하는 날짜 및 시간 값을 나타냅니다.The ODBC API defines escape sequences to represent date and time values, which ODBC calls timestamp data. 이 ODBC 타임스탬프 형식은 MicrosoftMicrosoft OLE DB provider for SQL ServerSQL Server에서 지원하는 OLE DB 언어 정의(DBGUID-SQL)에서도 지원됩니다.This ODBC timestamp format is also supported by the OLE DB language definition (DBGUID-SQL) supported by the MicrosoftMicrosoft OLE DB provider for SQL ServerSQL Server. ADO, OLE DB 및 ODBC 기반 API를 사용하는 애플리케이션에서는 이 ODBC 타임스탬프 형식을 사용하여 날짜 및 시간을 나타낼 수 있습니다.Applications that use the ADO, OLE DB, and ODBC-based APIs can use this ODBC timestamp format to represent dates and times.

ODBC 타임스탬프 이스케이프 시퀀스의 형식은 다음과 같습니다. { literal_type 'constant_value' }.ODBC timestamp escape sequences are of the format: { literal_type 'constant_value' }:



- literal_type은 이스케이프 시퀀스의 유형을 지정합니다.- literal_type specifies the type of the escape sequence. 타임스탬프에는 다음과 같은 3개의 literal_type 지정자가 있습니다.Timestamps have three literal_type specifiers:
1) d = 날짜만1) d = date only
2) t = 시간만2) t = time only
3) ts = 타임스탬프(시간+날짜)3) ts = timestamp (time + date)



- 'constant_value'는 이스케이프 시퀀스의 값입니다.- 'constant_value' is the value of the escape sequence. constant_value는 각 literal_type에 대해 이러한 형식을 따라야 합니다.constant_value must follow these formats for each literal_type.
d : yyyy-mm-ddd : yyyy-mm-dd
t : hh:mm:ss[.fff]t : hh:mm:ss[.fff]
ts : yyyy-mm-dd hh:mm:ss[.fff]ts : yyyy-mm-dd hh:mm:ss[.fff]

datetime 초 소수 부분 자릿수 반올림Rounding of datetime Fractional Second Precision

다음 표에서와 같이 datetime 값은 .000, .003 또는 .007초 단위로 반올림됩니다.datetime values are rounded to increments of .000, .003, or .007 seconds, as shown in the following table.

사용자 지정 값User-specified value 시스템 저장 값System stored value
01/01/98 23:59:59.99901/01/98 23:59:59.999 1998-01-02 00:00:00.0001998-01-02 00:00:00.000
01/01/98 23:59:59.99501/01/98 23:59:59.995

01/01/98 23:59:59.99601/01/98 23:59:59.996

01/01/98 23:59:59.99701/01/98 23:59:59.997

01/01/98 23:59:59.99801/01/98 23:59:59.998
1998-01-01 23:59:59.9971998-01-01 23:59:59.997
01/01/98 23:59:59.99201/01/98 23:59:59.992

01/01/98 23:59:59.99301/01/98 23:59:59.993

01/01/98 23:59:59.99401/01/98 23:59:59.994
1998-01-01 23:59:59.9931998-01-01 23:59:59.993
01/01/98 23:59:59.99001/01/98 23:59:59.990

01/01/98 23:59:59.99101/01/98 23:59:59.991
1998-01-01 23:59:59.9901998-01-01 23:59:59.990

ANSI 및 ISO 8601 호환성ANSI and ISO 8601 Compliance

datetime은 ANSI 또는 ISO 8601 규격이 아닙니다.datetime isn't ANSI or ISO 8601 compliant.

Date 및 Time 데이터 변환Converting Date and Time Data

SQL ServerSQL Server에서 날짜 및 시간 데이터 형식을 변환할 때 날짜나 시간으로 인식되지 않는 값은 모두 무시됩니다.When you convert to date and time data types, SQL ServerSQL Server rejects all values it can't recognize as dates or times. 날짜 및 시간 데이터에 CAST 및 CONVERT 함수를 사용하는 방법은 CAST 및 CONVERT(Transact-SQL)를 참조하세요.For information about using the CAST and CONVERT functions with date and time data, see CAST and CONVERT (Transact-SQL).

다른 날짜 및 시간 형식을 datetime 데이터 형식으로 변환Converting Other Date and Time Types to the datetime Data Type

이 섹션에서는 다른 날짜/시간 데이터 형식이 datetime 데이터 형식으로 변환하면 어떤 일이 발생하는지를 설명합니다.This section describes what occurs when other date and time data types are converted to the datetime data type.

date에서 변환되는 경우 년, 월, 일이 복사됩니다.When the conversion is from date, the year, month, and day are copied. 시간 구성 요소는 00:00:00.000으로 설정됩니다.The time component is set to 00:00:00.000. 다음 코드에서는 date 값을 datetime 값으로 변환한 결과를 보여 줍니다.The following code shows the results of converting a date value to a datetime value.

DECLARE @date date = '12-21-16';  
DECLARE @datetime datetime = @date;  
  
SELECT @datetime AS '@datetime', @date AS '@date';  
  
--Result  
--@datetime               @date  
------------------------- ----------  
--2016-12-21 00:00:00.000 2016-12-21  

time(n) 에서 변환되는 경우 시간 구성 요소가 복사되고 날짜 구성 요소는 '1900-01-01'로 설정됩니다.When the conversion is from time(n), the time component is copied, and the date component is set to '1900-01-01'. time(n) 값의 소수 자릿수가 세 자리보다 크면 값이 이에 맞게 잘립니다.When the fractional precision of the time(n) value is greater than three digits, the value will be truncated to fit. 다음 예에서는 time(4) 값을 datetime 값으로 변환한 결과를 보여 줍니다.The following example shows the results of converting a time(4) value to a datetime value.

DECLARE @time time(4) = '12:10:05.1237';  
DECLARE @datetime datetime = @time;  
  
SELECT @datetime AS '@datetime', @time AS '@time';  
  
--Result  
--@datetime               @time  
------------------------- -------------  
--1900-01-01 12:10:05.123 12:10:05.1237  

smalldatetime에서 변환되는 경우 시간과 분이 복사됩니다.When the conversion is from smalldatetime, the hours and minutes are copied. 초 및 소수 자릿수 초는 0으로 설정됩니다.The seconds and fractional seconds are set to 0. 다음 코드에서는 smalldatetime 값을 datetime 값으로 변환한 결과를 보여 줍니다.The following code shows the results of converting a smalldatetime value to a datetime value.

DECLARE @smalldatetime smalldatetime = '12-01-16 12:32';  
DECLARE @datetime datetime = @smalldatetime;  
  
SELECT @datetime AS '@datetime', @smalldatetime AS '@smalldatetime';  
  
--Result  
--@datetime               @smalldatetime  
------------------------- -----------------------  
--2016-12-01 12:32:00.000 2016-12-01 12:32:00  

datetimeoffset(n) 에서 변환되는 경우 날짜 및 시간 구성 요소가 복사됩니다.When the conversion is from datetimeoffset(n), the date and time components are copied. 표준 시간대는 잘립니다.The time zone is truncated. datetimeoffset(n) 값의 소수 자릿수가 세 자리보다 크면 값이 잘립니다.When the fractional precision of the datetimeoffset(n) value is greater than three digits, the value will be truncated. 다음 예에서는 datetimeoffset(4) 값을 datetime 값으로 변환한 결과를 보여 줍니다.The following example shows the results of converting a datetimeoffset(4) value to a datetime value.

DECLARE @datetimeoffset datetimeoffset(4) = '1968-10-23 12:45:37.1234 +10:0';  
DECLARE @datetime datetime = @datetimeoffset;  
  
SELECT @datetime AS '@datetime', @datetimeoffset AS '@datetimeoffset';  
  
--Result  
--@datetime               @datetimeoffset  
------------------------- ------------------------------  
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237 +01:0   

변환이 datetime2(n) 에서 일어나는 경우 날짜 및 시간이 복사됩니다.When the conversion is from datetime2(n), the date and time are copied. datetime2(n) 값의 소수 자릿수가 세 자리보다 크면 값이 잘립니다.When the fractional precision of the datetime2(n) value is greater than three digits, the value will be truncated. 다음 예에서는 datetime2(4) 값을 datetime 값으로 변환한 결과를 보여 줍니다.The following example shows the results of converting a datetime2(4) value to a datetime value.

DECLARE @datetime2 datetime2(4) = '1968-10-23 12:45:37.1237';  
DECLARE @datetime datetime = @datetime2;  
  
SELECT @datetime AS '@datetime', @datetime2 AS '@datetime2';  
  
--Result  
--@datetime               @datetime2  
------------------------- ------------------------  
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237  

Examples

다음 예에서는 문자열을 각 datetime 데이터 형식으로 캐스팅하는 결과를 비교합니다.The following example compares the results of casting a string to each date and time data type.

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';  

결과 집합은 다음과 같습니다.Here is the result set.

데이터 형식Data type 출력Output
timetime 12:35:29.12:35:29. 12345671234567
datedate 2007-05-082007-05-08
smalldatetimesmalldatetime 2007-05-08 12:35:002007-05-08 12:35:00
datetimedatetime 2007-05-08 12:35:29.1232007-05-08 12:35:29.123
datetime2datetime2 2007-05-08 12:35:29.2007-05-08 12:35:29. 12345671234567
datetimeoffsetdatetimeoffset 2007-05-08 12:35:29.1234567 +12:152007-05-08 12:35:29.1234567 +12:15

관련 항목:See also

CAST 및 CONVERT(Transact-SQL)CAST and CONVERT (Transact-SQL)