Loading...
MySQL 9.5 Reference Manual 9.5의 13.2 Date and Time Data Types의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
13.2.1 Date and Time Data Type Syntax 13.2.2 The DATE, DATETIME, and TIMESTAMP Types 13.2.3 The TIME Type 13.2.4 The YEAR Type 13.2.5 Automatic Initialization and Updating for TIMESTAMP and DATETIME 13.2.6 Fractional Seconds in Time Values 13.2.7 What Calendar Is Used By MySQL? 13.2.8 Conversion Between Date and Time Types 13.2.9 2-Digit Years in Dates
시간값(temporal values)을 표현하기 위한 date와 time 데이터 타입은
DATE,
TIME,
DATETIME,
TIMESTAMP, 그리고
YEAR입니다. 각 temporal 타입은 유효한 값의 범위를 가지며, MySQL이
표현할 수 없는 잘못된 값을 지정했을 때 사용할 수 있는 “zero” 값도
가지고 있습니다. TIMESTAMP와
DATETIME 타입에는
Section 13.2.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”에 설명된
특별한 자동 업데이트 동작이 있습니다.
temporal 데이터 타입의 스토리지 요구사항에 대한 정보는 Section 13.7, “Data Type Storage Requirements”를 참조하십시오.
temporal 값에서 동작하는 함수들에 대한 설명은 Section 14.7, “Date and Time Functions”를 참조하십시오.
date와 time 타입을 사용할 때 다음과 같은 일반적인 사항을 유의하십시오:
MySQL은 특정 date나 time 타입에 대한 값을 표준 출력 형식으로 검색하지만, 여러분이 제공하는 입력 값에 대해서는 (예를 들어, date나 time 타입에 할당되거나 비교될 값을 지정할 때) 다양한 형식을 해석하려고 시도합니다. date와 time 타입에 대해 허용되는 형식에 대한 설명은 Section 11.1.3, “Date and Time Literals”를 참조하십시오. 유효한 값을 제공하는 것이 기대됩니다. 다른 형식의 값을 사용하면 예측할 수 없는 결과가 발생할 수 있습니다.
MySQL은 여러 형식의 값을 해석하려고 시도하지만,
date의 각 요소는 항상 연-월-일 순서(예:
'98-09-04')로 제공되어야 하며, 다른 곳에서 흔히 사용하는
월-일-연이나 일-월-연 순서(예:
'09-04-98',
'04-09-98')로는 제공하면 안 됩니다. 다른 순서의
문자열을 연-월-일 순서로 변환하려면
STR_TO_DATE() 함수가
유용할 수 있습니다.
2자리 연도 값을 포함하는 date는 세기가 알려져 있지 않기 때문에 모호합니다. MySQL은 다음 규칙을 사용하여 2자리 연도 값을 해석합니다:
70-99 범위의 연도 값은
1970-1999가 됩니다.
00-69 범위의 연도 값은
2000-2069가 됩니다.
또한 Section 13.2.9, “2-Digit Years in Dates”도 참조하십시오.
한 temporal 타입에서 다른 타입으로의 값 변환은 Section 13.2.8, “Conversion Between Date and Time Types”에 있는 규칙에 따라 이루어집니다.
MySQL은 date나 time 값이 숫자 컨텍스트에서 사용되면 자동으로 숫자로 변환하며, 그 반대도 마찬가지입니다.
기본적으로, MySQL이 특정 date나 time 타입에 대해 범위를 벗어나거나
그 타입에 대해 그 밖의 방식으로 유효하지 않은 값을 만나면,
해당 값을 그 타입의 “zero” 값으로
변환합니다. 예외적으로, 범위를 벗어난
TIME 값은
TIME 범위의
적절한 끝점으로 잘려(clipped) 변환됩니다.
SQL 모드를 적절한 값으로 설정함으로써, MySQL이 지원하도록
하고자 하는 date의 종류를 보다 정확하게 지정할 수 있습니다.
( Section 7.1.11, “Server SQL Modes”를
참조하십시오.) ALLOW_INVALID_DATES SQL
모드를 활성화하면
'2009-11-31'과 같은 특정 date를 MySQL이
허용하도록 할 수 있습니다. 이는 (예를 들어 web form에서) 사용자가
지정한 “잘못되었을 가능성이 있는” 값을 나중에 처리하기 위해
데이터베이스에 저장하고자 할 때 유용합니다. 이 모드에서는 MySQL이
month가 1에서 12 범위 내에 있는지와 day가 1에서 31 범위 내에 있는지만
검증합니다.
MySQL은 DATE나
DATETIME 컬럼에 day가 0이거나
month와 day가 0인 date를 저장하는 것을 허용합니다. 이는 정확한
날짜를 알 수 없는 birthdate를 저장해야 하는 애플리케이션에
유용합니다. 이 경우 date를 단순히
'2009-00-00' 또는
'2009-01-00'으로 저장하면 됩니다. 그러나 이러한
date에 대해서는 DATE_SUB()나
DATE_ADD()처럼
완전한 date가 필요한 함수에 대해 올바른 결과를 기대해서는 안 됩니다.
date에서 month나 day가 0인 값을 허용하지 않으려면
NO_ZERO_IN_DATE
모드를 활성화하십시오.
MySQL은 '0000-00-00'이라는 “zero” 값을
“dummy date”로 저장하는 것을 허용합니다. 어떤 경우에는
NULL 값을 사용하는 것보다 이것이 더 편리하고,
더 적은 데이터 및 인덱스 공간을 사용합니다.
'0000-00-00'을 허용하지 않으려면
NO_ZERO_DATE
모드를 활성화하십시오.
Connector/ODBC를 통해 사용되는 “zero” date 또는 time 값은
ODBC가 이러한 값을 처리할 수 없기 때문에 자동으로
NULL로 변환됩니다.
다음 표는 각 타입에 대한 “zero” 값의 형식을
보여줍니다. “zero” 값은 특수하지만, 표에 표시된
값을 사용하여 명시적으로 저장하거나 참조할 수 있습니다. 또한,
작성하기 더 쉬운 '0' 또는 0 값을 사용해도
이 작업을 수행할 수 있습니다. date 부분을 포함하는 temporal 타입(
DATE,
DATETIME,
TIMESTAMP)의 경우 이러한 값을 사용하면
warning이나 error가 발생할 수 있습니다. 정확한 동작은 strict 및
NO_ZERO_DATE SQL 모드 중 어떤 것이
활성화되어 있는지에 따라 달라집니다. 자세한 내용은
Section 7.1.11, “Server SQL Modes”를 참조하십시오.
| Data Type | “Zero” Value |
|---|---|
DATE | '0000-00-00' |
TIME | '00:00:00' |
DATETIME | '0000-00-00 00:00:00' |
TIMESTAMP | '0000-00-00 00:00:00' |
YEAR | 0000 |
13.1.7 Out-of-Range and Overflow Handling
13.2.1 Date and Time Data Type Syntax