date(Transact-SQL)date (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

SQL ServerSQL Server에서 날짜를 정의합니다.Defines a date in SQL ServerSQL Server.

date 설명date description

속성Property Value
구문Syntax datedate
사용Usage DECLARE @MyDate dateDECLARE @MyDate date

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

(하위 클라이언트에 대해 사용됨)(used for down-level client)
YYYY-MM-DDYYYY-MM-DD

자세한 내용은 뒷부분에 나오는 "하위 클라이언트에 대한 이전 버전과의 호환성" 섹션을 참조하세요.For more information, see the "Backward Compatibility for Down-level Clients" section that follows.
범위Range 0001-01-01부터 9999-12-31까지(Informatica의 경우 1582-10-15부터 9999-12-31)0001-01-01 through 9999-12-31 (1582-10-15 through 9999-12-31 for Informatica)

CE(서기) 1년 1월 1일부터 CE 9999년 12월 31일까지(Informatica의 경우 CE 1582년 10월 15일부터 CE 9999년 12월 31일까지)January 1, 1 CE (Common Era) through December 31, 9999 CE (October 15, 1582 CE through December 31, 9999 CE for Informatica)
요소 범위Element ranges YYYY는 0001에서 9999 사이에 속하는 4자리 숫자로, 연도를 나타냅니다.YYYY is four digits from 0001 to 9999 that represent a year. Informatica의 경우, YYYY는 1582에서 9999까지의 범위로 제한됩니다.For Informatica, YYYY is limited to the range 1582 to 9999.

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

DD는 월에 따라 01에서 31 사이에 속하는 두 자리 숫자로, 특정 월의 일을 나타냅니다.DD is two digits from 01 to 31, depending on the month, that represents a day of the specified month.
문자 길이Character length 10자리10 positions
전체 자릿수, 소수 자릿수Precision, scale 10, 010, 0
스토리지 크기Storage size 3바이트(고정)3 bytes, fixed
스토리지 구조Storage structure 1, 3바이트 정수로 날짜를 저장합니다.1, 3-byte integer stores date.
정확도Accuracy 1일One day
기본값Default value 1900-01-011900-01-01

이 값은 time에서 datetime2 또는 datetimeoffset으로의 암시적 변환을 위해 추가되는 날짜 부분에 사용됩니다.This value is used for the appended date part for implicit conversion from time to datetime2 or datetimeoffset.
달력Calendar 일반 달력Gregorian
사용자 정의 초 소수 부분 자릿수User-defined fractional second precision 아니오No
표준 시간대 오프셋 인식 및 유지Time zone offset aware and preservation 아니오No
일광 절약 시간제 인식Daylight saving aware 아니오No

date에 대해 지원되는 문자열 리터럴 형식Supported string literal formats for date

다음 표에서는 date 데이터 형식에 대해 유효한 문자열 리터럴 형식을 보여줍니다.The following tables show the valid string literal formats for the date data type.

숫자Numeric 설명Description
mdymdy

[m]m/dd/[yy]yy[m]m/dd/[yy]yy

[m]m-dd-[yy]yy[m]m-dd-[yy]yy

[m]m.dd.[yy]yy[m]m.dd.[yy]yy

mydmyd

mm/[yy]yy/ddmm/[yy]yy/dd

mm-[yy]yy/ddmm-[yy]yy/dd

[m]m.[yy]yy.dd[m]m.[yy]yy.dd

dmydmy

dd/[m]m/[yy]yydd/[m]m/[yy]yy

dd-[m]m-[yy]yydd-[m]m-[yy]yy

dd.[m]m.[yy]yydd.[m]m.[yy]yy

dymdym

dd/[yy]yy/[m]mdd/[yy]yy/[m]m

dd-[yy]yy-[m]mdd-[yy]yy-[m]m

dd.[yy]yy.[m]mdd.[yy]yy.[m]m

ymdymd

[yy]yy/[m]m/dd[yy]yy/[m]m/dd

[yy]yy-[m]m-dd[yy]yy-[m]m-dd

[yy]yy-[m]m-dd[yy]yy-[m]m-dd
[m]m, dd, [yy]yy는 슬래시(/), 하이픈(-) 또는 마침표(.)로 구분된 문자열에서 월, 일, 연도를 나타냅니다.[m]m, dd, and [yy]yy represent month, day, and year in a string with slash marks (/), hyphens (-), or periods (.) as separators.

네 자리 또는 두 자리 연도만 지원됩니다.Only four- or two-digit years are supported. 가능하면 네 자리 연도를 사용하세요.Use four-digit years whenever possible. 두 자리 연도를 4자리 연도로 해석할 구분 연도를 0001부터 9999까지의 정수 중에서 지정하려면 두 자리 연도 구분 서버 구성 옵션 구성을 사용합니다.To specify an integer from 0001 to 9999 that represents the cutoff year for interpreting two-digit years as four-digit years, use the Configure the two digit year cutoff Server Configuration Option.

참고!Note! Informatica의 경우, YYYY는 1582에서 9999까지의 범위로 제한됩니다.For Informatica, YYYY is limited to the range 1582 to 9999.

마지막 두 자리와 같거나 작은 두 자리 연도는 구분 연도와 같은 세기 연도입니다.A two-digit year that is less than or equal to the last two digits of the cutoff year is in the same century as the cutoff year. 두 자리 연도가 구분 연도의 마지막 두 자리보다 크면 구분 연도보다 하나 이전의 세기로 해석됩니다.A two-digit year greater than the last two digits of the cutoff year is in the century that comes before the cutoff year. 예를 들어 두 자리 연도 구분이 2049(기본값)이면 두 자리 연도 49는 2049로 해석되고 두 자리 연도 50은 1950으로 해석됩니다.For example, if the two-digit year cutoff is the default 2049, the two-digit year 49 is interpreted as 2049 and the two-digit year 50 is interpreted as 1950.

기본 날짜 형식은 현재 언어 설정에 따라 결정됩니다.The default date format is determined by the current language setting. SET LANGUAGESET DATEFORMAT 문을 사용하여 날짜 형식을 변경할 수 있습니다.You can change the date format by using the SET LANGUAGE and SET DATEFORMAT statements.

ydm 형식은 date에 대해 지원되지 않습니다.The ydm format isn't supported for date.
알파벳Alphabetical 설명Description
mon [dd][,] yyyymon [dd][,] yyyy

mon dd[,] [yymon dd[,] [yy

mon yyyy [dd]mon yyyy [dd]

[dd] mon[,] yyyy[dd] mon[,] yyyy

dd mon[,][yy]yydd mon[,][yy]yy

dd [yy]yy mondd [yy]yy mon

[dd] yyyy mon[dd] yyyy mon

yyyy mon [dd]yyyy mon [dd]

yyyy [dd] monyyyy [dd] mon
mon은 현재 언어에서 지정된 월의 전체 이름 또는 약어를 나타냅니다.mon represents the full month name or the month abbreviation given in the current language. 쉼표는 선택 사항이며 대문자는 무시됩니다.Commas are optional and capitalization is ignored.

모호성을 피하려면 4자리 연도를 사용하세요.To avoid ambiguity, use four-digit years.

일이 생략된 경우 해당 월의 첫째 날이 사용됩니다.If the day is missing, the first day of the month is supplied.
ISO 8601ISO 8601 설명Description
YYYY-MM-DDYYYY-MM-DD

YYYYMMDDYYYYMMDD
SQL 표준과 같습니다.Same as the SQL standard. 이 형식은 유일하게 국제 표준으로 정의된 형식입니다.This format is the only format defined as an international standard.
구분되지 않음Unseparated 설명Description
[yy]yymmdd[yy]yymmdd

yyyy[mm][dd]yyyy[mm][dd]
date 데이터는 4자리, 6자리 또는 8자리로 지정할 수 있습니다.The date data can be specified with four, six, or eight digits. 6자리 또는 8자리 문자열은 항상 ymd로 해석됩니다.A six- or eight-digit string is always interpreted as ymd. 월과 일은 항상 두 자리여야 합니다.The month and day must always be two digits. 4자리 문자열은 연도로 해석됩니다.A four-digit string is interpreted as year.
ODBCODBC 설명Description
{ d 'yyyy-mm-dd' }{ d 'yyyy-mm-dd' } ODBC API에 따라 다릅니다.ODBC API specific.
W3C XML 형식W3C XML format 설명Description
yyyy-mm-ddTZDyyyy-mm-ddTZD XML/SOAP을 사용할 경우 지원됩니다.Supported for XML/SOAP usage.

TZD는 표준 시간대 지정자(Z나 +hh:mm 또는 -hh:mm)입니다.TZD is the time zone designator (Z or +hh:mm or -hh:mm):

- hh:mm은 표준 시간대 오프셋을 나타냅니다.- hh:mm represents the time zone offset. hh는 0에서 14 사이에 속하는 두 자리 숫자로, 표준 시간대 오프셋의 시간(시간)을 나타냅니다.hh is two digits, ranging from 0 to 14, that represent the number of hours in the time zone offset.
- MM은 0에서 59 사이에 속하는 두 자리 숫자로, 표준 시간대 오프셋의 추가 시간(분)을 나타냅니다.- MM is two digits, ranging from 0 to 59, that represent the number of additional minutes in the time zone offset.
- +(더하기) 또는 -(빼기)는 표준 시간대 오프셋의 필수 기호입니다.- + (plus) or - (minus) the mandatory sign of the time zone offset. 이 기호는 현지 시간을 가져오기 위해 UTC(협정 세계시)에서 표준 시간대 오프셋을 더했는지 또는 뺐는지를 나타냅니다.This sign indicates that, to obtain the local time, the time zone offset is added or subtracted from the Coordinated Universal Times (UTC) time. 올바른 표준 시간대 오프셋 범위는 -14:00에서 +14:00 사이입니다.The valid range of time zone offset is from -14:00 to +14:00.

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

날짜는 일반 달력에 대한 ANSI SQL 표준 정의를 준수합니다. "NOTE 85 - Datetime 데이터 형식을 사용하면 일반 달력 형식의 날짜를 0001–01–01 CE에서 9999-12-31 CE 사이에 속하는 날짜 범위에 저장할 수 있습니다."를 따릅니다.date complies with the ANSI SQL standard definition for the Gregorian calendar: "NOTE 85 - Datetime data types will allow dates in the Gregorian format to be stored in the date range 0001-01-01 CE through 9999-12-31 CE."

하위 클라이언트에 대해 사용되는 기본 문자열 리터럴 형식은 YYYY-MM-DD로 정의되는 SQL 표준 형식을 따릅니다.The default string literal format, which is used for down-level clients, complies with the SQL standard form that is defined as YYYY-MM-DD. 이 형식은 DATE에 대한 ISO 8601 정의와 같습니다.This format is the same as the ISO 8601 definition for DATE.

참고

Informatica의 경우 범위는 1582-10-15(CE 1582년 10월 15일)부터 9999-12-31(CE 9999년 12월 31일)까지로 제한됩니다.For Informatica, the range is limited to 1582-10-15 (October 15, 1582 CE) to 9999-12-31 (December 31, 9999 CE).

하위 클라이언트에 대한 이전 버전과의 호환성Backward compatibility for down-level clients

일부 하위 클라이언트는 time, date, datetime2datetimeoffset 데이터 형식을 지원하지 않습니다.Some down-level clients don't support the time, date, datetime2, and datetimeoffset data types. 다음 표에서는 상위 SQL ServerSQL Server 인스턴스와 하위 클라이언트 간 형식 매핑을 보여 줍니다.The following table shows the type mapping between an up-level instance of SQL ServerSQL Server and down-level clients.

SQL ServerSQL Server 데이터 형식data type 하위 클라이언트에 전달된 기본 문자열 리터럴 형식Default string literal format passed to down-level client 하위 수준 ODBCDown-level ODBC 하위 수준 OLEDBDown-level OLEDB 하위 수준 JDBCDown-level JDBC 하위 수준 SQLCLIENTDown-level SQLCLIENT
timetime hh:mm:ss[.nnnnnnn]hh:mm:ss[.nnnnnnn] SQL_WVARCHAR 또는 SQL_VARCHARSQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR 또는 DBTYPE_STRDBTYPE_WSTRor DBTYPE_STR Java.sql.StringJava.sql.String String 또는 SqStringString or SqString
datedate YYYY-MM-DDYYYY-MM-DD SQL_WVARCHAR 또는 SQL_VARCHARSQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR 또는 DBTYPE_STRDBTYPE_WSTRor DBTYPE_STR Java.sql.StringJava.sql.String String 또는 SqStringString or SqString
datetime2datetime2 YYYY-MM-DD hh:mm:ss[.nnnnnnn]YYYY-MM-DD hh:mm:ss[.nnnnnnn] SQL_WVARCHAR 또는 SQL_VARCHARSQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR 또는 DBTYPE_STRDBTYPE_WSTRor DBTYPE_STR Java.sql.StringJava.sql.String String 또는 SqStringString or SqString
datetimeoffsetdatetimeoffset YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mmYYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm SQL_WVARCHAR 또는 SQL_VARCHARSQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR 또는 DBTYPE_STRDBTYPE_WSTRor DBTYPE_STR Java.sql.StringJava.sql.String String 또는 SqStringString or SqString

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 doesn'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).

date을 다른 날짜 및 시간 형식으로 변환Converting date to other date and time types

이 섹션에서는 date 데이터 형식을 다른 날짜 및 시간 데이터 형식으로 변환할 때 어떤 일이 발생하는지를 설명합니다.This section describes what occurs when you convert a date data type to other date and time data types.

변환이 time(n) 에서 일어나는 경우 이 변환이 실패하고, "피연산자 유형 충돌: date는 time과 호환되지 않습니다"라는 오류 메시지 206이 발생합니다.When the conversion is to time(n), the conversion fails, and error message 206 is raised: "Operand type clash: date is incompatible with time".

변환이 datetime에서 일어나는 경우 날짜가 복사 됩니다.If the conversion is to datetime, date is copied. 다음 코드에서는 date 값을 datetime 값으로 변환한 결과를 보여 줍니다.The following code shows the results of converting a date value to a datetime value.

DECLARE @date date= '12-10-25';  
DECLARE @datetime datetime= @date;  
  
SELECT @date AS '@date', @datetime AS '@datetime';  
  
--Result  
--@date      @datetime  
------------ -----------------------  
--2025-12-10 2025-12-10 00:00:00.000  
--  
--(1 row(s) affected)  

변환이 smalldatetime에서 일어나는 경우 date 값이 smalldatetime 범위 안에 있으면 날짜 구성 요소가 복사되고 시간 구성 요소는 00:00:00.000으로 설정됩니다.When the conversion is to smalldatetime, the date value is in the range of a smalldatetime, the date component is copied, and the time component is set to 00:00:00.000. 날짜 값이 smalldatetime 값의 범위 밖에 있으면, “data 데이터 형식을 smalldatetime 데이터 형식으로 변환하는 중 값 범위를 벗어났습니다.”라는 오류 메시지 242가 발생하고 smalldatetime 값이 NULL로 설정됩니다.When the date value is outside the range of a smalldatetime value, error message 242 is raised: "The conversion of a date data type to a smalldatetime data types resulted in an out-of-range value."; and the smalldatetime value is set to NULL. 다음 코드에서는 date 값을 smalldatetime 값으로 변환한 결과를 보여 줍니다.The following code shows the results of converting a date value to a smalldatetime value.

DECLARE @date date= '1912-10-25';  
DECLARE @smalldatetime smalldatetime = @date;  
  
SELECT @date AS '@date', @smalldatetime AS '@smalldatetime';  
  
--Result  
--@date      @smalldatetime  
------------ -----------------------  
--1912-10-25 1912-10-25 00:00:00  
--  
--(1 row(s) affected)  

변환이 datetimeoffset(n) 에서 일어나는 경우 날짜가 복사되고 시간은 00:00.0000000 +00:00으로 설정됩니다.For conversion to datetimeoffset(n), date is copied, and the time is set to 00:00.0000000 +00:00. 다음 코드에서는 date 값을 datetimeoffset(3) 값으로 변환한 결과를 보여 줍니다.The following code shows the results of converting a date value to a datetimeoffset(3) value.

DECLARE @date date = '1912-10-25';  
DECLARE @datetimeoffset datetimeoffset(3) = @date;  
  
SELECT @date AS '@date', @datetimeoffset AS '@datetimeoffset';  
  
--Result  
--@date      @datetimeoffset  
------------ ------------------------------  
--1912-10-25 1912-10-25 00:00:00.000 +00:00  
--  
--(1 row(s) affected)  

변환이 datetime2(n) 에서 일어나는 경우 날짜 구성 요소가 복사되고 시간 구성 요소는 00:00.000000으로 설정됩니다.When the conversion is to datetime2(n), the date component is copied, and the time component is set to 00:00.000000. 다음 코드에서는 date 값을 datetime2(3) 값으로 변환한 결과를 보여 줍니다.The following code shows the results of converting a date value to a datetime2(3) value.

DECLARE @date date = '1912-10-25'  
DECLARE @datetime2 datetime2(3) = @date;  
  
SELECT @date AS '@date', @datetime2 AS '@datetime2(3)';  
  
--Result  
--@date      @datetime2(3)  
------------ -----------------------  
--1912-10-25 1912-10-25 00:00:00.000  
--  
--(1 row(s) affected)  

문자열 리터럴을 date로 변환Converting string literals to date

문자열에 포함된 모든 부분의 형식이 유효한 경우 문자열 리터럴에서 날짜/시간 유형으로 변환할 수 있습니다.Conversions from string literals to date and time types are allowed if all parts of the strings are in valid formats. 그렇지 않으면 런타임 오류가 발생합니다.Otherwise, a runtime error is raised. 날짜 및 시간 형식에서 문자열 리터럴로의 암시적 변환 또는 명시적 변환에 스타일을 지정하지 않은 경우 현재 세션의 기본 형식이 지정됩니다.Implicit conversions or explicit conversions that don't specify a style, from date and time types to string literals will be in the default format of the current session. 다음 표에서는 문자열 리터럴을 date 데이터 형식으로 변환하는 규칙을 보여 줍니다.The following table shows the rules for converting a string literal to the date data type.

입력 문자열 리터럴Input string literal datedate
ODBC DATEODBC DATE ODBC 문자열 리터럴은 datetime 데이터 형식으로 매핑됩니다.ODBC string literals are mapped to the datetime data type. ODBC DATETIME 리터럴에서 date 형식으로 할당하면 datetime과 변환 규칙이 정의하는 형식 간에 암시적 변환이 발생합니다.Any assignment operation from ODBC DATETIME literals into a date type causes an implicit conversion between datetime and the type that the conversion rules define.
ODBC TIMEODBC TIME 이전 ODBC DATE 규칙을 참조하세요.See previous ODBC DATE rule.
ODBC DATETIMEODBC DATETIME 이전 ODBC DATE 규칙을 참조하세요.See previous ODBC DATE rule.
DATE만DATE only 중요하지 않음Trivial
TIME만TIME only 기본값이 제공됩니다.Default values are supplied.
TIMEZONE만TIMEZONE only 기본값이 제공됩니다.Default values are supplied.
DATE+TIMEDATE + TIME 입력 문자열의 DATE 부분이 사용됩니다.The DATE part of the input string is used.
DATE+TIMEZONEDATE + TIMEZONE 허용되지 않습니다.Not allowed.
TIME+TIMEZONETIME + TIMEZONE 기본값이 제공됩니다.Default values are supplied.
DATE+TIME+TIMEZONEDATE + TIME + TIMEZONE 로컬 DATETIME의 DATE 부분이 사용됩니다.The DATE part of local DATETIME will be used.

Examples

다음 예에서는 문자열을 각 날짜 및 시간 데이터 형식으로 캐스팅하는 결과를 비교합니다.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)