11.3 날짜와 시간 형
시간 값을 나타 내기위한 날짜와 시간 형식은 DATE
, TIME
, DATETIME
, TIMESTAMP
및 YEAR
입니다. 각각의 시간 형은 일정 범위의 유효한 값 외에, MySQL에서는 나타낼 수없는 잘못된 값을 지정할 때 사용할 수있는 '제로'값이 있습니다. TIMESTAMP
형은 후술하는 바와 같이 특수 자동 업데이트가 있습니다. 시간 형 스토리지 요구 사항은 섹션 11.7 "데이터 유형의 스토리지 요구 사항" 을 참조하십시오.
날짜와 시간 형식을 처리 할 때 다음 사항에 유의하십시오.
MySQL은 표준 출력 형식으로 소정의 날짜 또는 시간 형식의 값을 얻을 수 있지만, (예를 들어, 날짜 또는 시간 형식에 매핑하거나 비교하거나 값을 지정할 때) 입력 한 입력 값에 대해 다양한 형식을 해석하려고합니다. 날짜와 시간 형식에 허용되는 형식의 설명은 섹션 9.1.3 "날짜 리터럴과 시간 리터럴" 을 참조하십시오. 유효한 값을 입력해야합니다. 다른 형식으로 값을 사용하면 예기치 않은 결과가 발생할 수 있습니다.
MySQL은 여러 형태로 값을 해석하려고하지만, 날짜 부분은 다른 곳에서는 일반적으로 사용되는 월 - 일 - 년이나 일 - 월 - 년 순 (
'09-04-98'
나'04-09-98'
등) 대신 년 - 월 - 일의 순서 ('98-09-04'
등)에서 항상 지정해야합니다.두 자리 연도를 포함한 날짜 값은 세기가 알 수 없기 때문에 모호합니다. MySQL은 다음 규칙을 사용하여 2 자리 연도 값을 해석합니다.
70-99
범위의 값은1970-1999
로 변환됩니다.00-69
범위의 값은2000-2069
로 변환됩니다.
섹션 11.3.8 "날짜에서 2 자리 연도" 를 참조하십시오.
있는 시간 형식에서 다른 시간 형식으로 값 변환은 섹션 11.3.7 "날짜 및 시간 형식 간의 변환" 의 규칙에 따라 이루어집니다.
MySQL은 자동으로 값이 숫자 컨텍스트에서 사용되는 경우 날짜 또는 시간 값을 숫자로 또는 그 반대로 변환합니다.
기본적으로 MySQL은 날짜 또는 시간 형식의 값 범위 밖인지, 그 이외 형태에있어서 무효 인 값을 찾으면 값을 그 형태의 「제로」값으로 변환합니다. 예외가 범위를 벗어난
TIME
값은TIME
범위의 적절한 종점에 잘려 있습니다.SQL 모드를 적절한 값으로 설정하면 MySQL이 지원하는 날짜의 종류를보다 정확하게 지정할 수 있습니다. ( 섹션 5.1.7 "서버 SQL 모드" 를 참조하십시오.)
ALLOW_INVALID_DATES
SQL 모드를 활성화함으로써'2009-11-31'
등의 특정 날짜를 MySQL에 받아 들인 수 있습니다. 이것은 사용자가 향후 처리를 위해 (예를 들어 Web 양식) 지정한 '잘못하고있을 가능성이있다 "값을 데이터베이스에 저장할 때 유용합니다. 이 모드에서는, MySQL은 달이 1에서 12까지의 범위 내에 있는지와 날짜가 1에서 31까지의 범위에 있는지 만 확인합니다.MySQL은
DATE
또는DATETIME
컬럼에 일이 제로 또는 월과 일이 제로인 날짜의 저장을 허용하고 있습니다. 이것은 정확한 날짜를 알고 있지 않을 가능성있는 생년월일을 저장해야하는 응용 프로그램에 유용합니다. 이 경우는 단순히 날짜를'2009-00-00'
또는'2009-01-00'
로 저장합니다. 이러한 날짜를 저장하는 경우DATE_SUB()
와DATE_ADD()
등의 완전한 날짜를 필요로하는 함수가 정확한 결과가 반환되는 것은 기대하지 마십시오. 날짜 제로 달 또는 일의 부분을 해제하려면NO_ZERO_IN_DATE
SQL 모드를 활성화합니다.MySQL은 "더미 날짜 '로
'0000-00-00'
의 '제로'의 값을 저장할 수 있습니다. 경우에 따라서는 이것은NULL
값을 사용하여보다 편리하고 사용하는 데이터 및 인덱스 공간이 줄어 듭니다.'0000-00-00'
을 해제하려면NO_ZERO_DATE
SQL 모드를 활성화합니다.Connector / ODBC에서 사용되는 "제로"날짜 또는 시간 값은 ODBC가 이러한 값을 처리 할 수 없으므로
NULL
로 자동 변환됩니다.
다음 표에서는 각 유형의 "제로"값의 형식을 나타냅니다. "제로"값은 특별하지만 표에 표시된 값을 사용하여 저장하거나 명시 적으로 참조 할 수 있습니다. 또한 더 쉽게 작성할 수 '0'
과 0
의 값을 사용하여 작업을 수행 할 수 있습니다. 날짜 부분 ( DATE
, DATETIME
, 그리고 TIMESTAMP
)을 포함한 시간 형식은 NO_ZERO_DATE
SQL 모드가 활성화되면이 값을 사용하면 경고가 발생합니다.
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 |