Loading...
MySQL 9.5 Reference Manual 9.5의 13.2.1 Date and Time Data Type Syntax의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
시간 값을 표현하기 위한 date 및 time 데이터 타입은
DATE,
TIME,
DATETIME,
TIMESTAMP, 그리고
YEAR입니다.
DATE 및
DATETIME 범위 설명에서
“supported”란, 더 이른 값이 동작할 수도 있지만
그에 대한 보장이 없음을 의미합니다.
MySQL은
TIME,
DATETIME, 및
TIMESTAMP 값에 대해
최대 마이크로초(6자리) 정밀도의 소수 초를 허용합니다.
소수 초 부분을 포함하는 컬럼을 정의하려면
type_name(fsp) 구문을 사용합니다.
여기서 _type_name_은
TIME,
DATETIME,
또는 TIMESTAMP이며,
_fsp_는 소수 초 정밀도입니다. 예:
1CREATE TABLE t1 (t TIME(3), dt DATETIME(6), ts TIMESTAMP(0));
fsp 값이 지정되었다면 0에서 6 범위 안에 있어야 합니다.
값 0은 소수 부분이 없음을 의미합니다. 생략되면
기본 정밀도는 0입니다. (이는 이전 MySQL 버전과의 호환성을 위해
표준 SQL의 기본값 6과는 다릅니다.)
테이블 내의 모든 TIMESTAMP 또는
DATETIME 컬럼은
자동 초기화 및 갱신 속성을 가질 수 있습니다.
Section 13.2.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”을 참조하십시오.
날짜입니다. 지원되는 범위는
'1000-01-01'에서
'9999-12-31'까지입니다. MySQL은
DATE 값을
'YYYY-MM-DD'
형식으로 표시하지만,
DATE 컬럼에 값을 할당할 때
문자열이나 숫자 모두 사용할 수 있습니다.
날짜와 시간의 조합입니다. 지원되는 범위는
'1000-01-01 00:00:00.000000'에서
'9999-12-31 23:59:59.499999'까지입니다. MySQL은
DATETIME 값을
'YYYY-MM-DD hh:mm:ss[.fraction]'
형식으로 표시하지만,
DATETIME 컬럼에 값을 할당할 때
문자열이나 숫자 모두 사용할 수 있습니다.
선택적인 fsp 값(0에서 6 범위)은
소수 초 정밀도를 지정하기 위해 줄 수 있습니다.
값 0은 소수 부분이 없음을 의미합니다.
생략되면 기본 정밀도는 0입니다.
DATETIME 컬럼에 대해 현재 날짜와 시간으로의
자동 초기화 및 갱신은
DEFAULT 및 ON UPDATE
컬럼 정의 절을 사용하여 지정할 수 있으며, 이는
Section 13.2.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”에 설명되어 있습니다.
타임스탬프입니다. 범위는 '1970-01-01 00:00:01.000000' UTC에서 '2038-01-19 03:14:07.499999' UTC까지입니다.
TIMESTAMP 값은 epoch
('1970-01-01 00:00:00' UTC) 이후의
초 수로 저장됩니다.
TIMESTAMP는
값 '1970-01-01 00:00:00'을 표현할 수 없습니다.
이 값은 epoch로부터 0초에 해당하며,
값 0은 '0000-00-00 00:00:00'인 “zero” TIMESTAMP 값을
표현하는 데 예약되어 있기 때문입니다.
선택적인 fsp 값(0에서 6 범위)은
소수 초 정밀도를 지정하기 위해 줄 수 있습니다.
값 0은 소수 부분이 없음을 의미합니다.
생략되면 기본 정밀도는 0입니다.
서버가 TIMESTAMP 정의를 처리하는 방식은
explicit_defaults_for_timestamp
시스템 변수의 값에 따라 달라집니다
(Section 7.1.8, “Server System Variables” 참조).
explicit_defaults_for_timestamp
가 enabled인 경우, 어떤
TIMESTAMP 컬럼에도
DEFAULT CURRENT_TIMESTAMP 또는 ON UPDATE CURRENT_TIMESTAMP 속성이 자동으로
할당되지 않습니다. 이러한 속성은 컬럼 정의에서 명시적으로
포함해야 합니다. 또한 명시적으로
NOT NULL로 선언되지 않은 모든
TIMESTAMP는
NULL 값을 허용합니다.
explicit_defaults_for_timestamp
가 disabled인 경우, 서버는 TIMESTAMP를
다음과 같이 처리합니다.
별도로 지정하지 않는 한, 테이블의 첫 번째
TIMESTAMP 컬럼은
값이 명시적으로 할당되지 않았을 때
가장 최근 수정의 날짜와 시간으로 자동 설정되도록
정의됩니다. 이는
TIMESTAMP가
INSERT 또는
UPDATE 작업의
타임스탬프를 기록하는 데 유용하게 만듭니다. 또한, 어떤
TIMESTAMP 컬럼이든,
NULL 값을 할당하여 현재 날짜와
시간으로 설정할 수 있습니다. 단, 해당 컬럼이
NULL 값을 허용하도록 NULL
애트리뷰트로 정의되지 않은 경우에만 가능합니다.
현재 날짜와 시간으로의 자동 초기화 및 갱신은
DEFAULT CURRENT_TIMESTAMP 및 ON UPDATE CURRENT_TIMESTAMP 컬럼 정의 절을 사용하여
지정할 수 있습니다. 기본적으로, 앞서 언급한 것처럼 첫 번째
TIMESTAMP 컬럼이 이러한
속성을 가집니다. 그러나 테이블 내의 어떤
TIMESTAMP 컬럼이든
이러한 속성을 갖도록 정의할 수 있습니다.
시간입니다. 범위는 '-838:59:59.000000'에서
'838:59:59.000000'까지입니다. MySQL은
TIME 값을
'hh:mm:ss[.fraction]'
형식으로 표시하지만,
TIME 컬럼에 값을 할당할 때
문자열이나 숫자 모두 사용할 수 있습니다.
선택적인 fsp 값(0에서 6 범위)은
소수 초 정밀도를 지정하기 위해 줄 수 있습니다.
값 0은 소수 부분이 없음을 의미합니다.
생략되면 기본 정밀도는 0입니다.
4자리 형식의 연도입니다. MySQL은
YEAR 값을
YYYY 형식으로 표시하지만,
YEAR 컬럼에 값을 할당할 때
문자열이나 숫자 모두 사용할 수 있습니다. 값은
1901에서 2155까지 또는
0000으로 표시됩니다.
YEAR 표시 형식 및 입력 값 해석에 대한
추가 정보는 Section 13.2.4, “The YEAR Type”을
참조하십시오.
참고
명시적인 디스플레이 너비를 가진
YEAR(4) 데이터 타입은
더 이상 사용되지 않습니다(deprecated). 향후 MySQL 버전에서
해당 지원이 제거될 것으로 예상해야 합니다.
대신 동일한 의미를 갖는 디스플레이 너비 없는
YEAR를 사용하십시오.
SUM() 및
AVG() 집계 함수는
시간형 값과 함께 동작하지 않습니다.
(이 함수들은 값을 숫자로 변환하면서 첫 번째
비숫자 문자 이후의 모든 내용을 잃습니다.) 이 문제를
우회하려면, 숫자 단위로 변환한 후
집계 연산을 수행하고, 다시 시간형 값으로
변환하십시오. 예:
1SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROM tbl_name; 2SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROM tbl_name;
13.2 Date and Time Data Types
13.2.2 The DATE, DATETIME, and TIMESTAMP Types