Loading...
MySQL 9.5 Reference Manual 9.5의 13.2.6 Fractional Seconds in Time Values의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL은 TIME,
DATETIME, 그리고
TIMESTAMP 값에 대해
마이크로초(6자리) 정밀도의 분수 초(fractional seconds)를 지원합니다:
type_name(fsp) 문법을 사용합니다. 여기서 type_name 은
TIME,
DATETIME, 또는
TIMESTAMP이고,
fsp 는 fractional seconds 정밀도입니다. 예를 들면 다음과 같습니다:1CREATE TABLE t1 (t TIME(3), dt DATETIME(6));
fsp 값이 주어지는 경우, 반드시
0에서 6 사이여야 합니다. 값이 0이면 fractional 부분이 없음을 의미합니다. 생략되면 기본 정밀도는 0입니다.
(이것은 이전 MySQL 버전과의 호환성을 위해
표준 SQL의 기본값 6과는 다릅니다.)
TIME,
DATE, 또는
TIMESTAMP 값을,
같은 type이지만 fractional digit 수가 더 적은 column에
삽입하면 반올림이 발생합니다. 다음과 같이
table을 생성하고 데이터를 삽입한다고 가정해 보겠습니다:1CREATE TABLE fractest( c1 TIME(2), c2 DATETIME(2), c3 TIMESTAMP(2) ); 2INSERT INTO fractest VALUES 3('17:51:04.777', '2018-09-08 17:51:04.777', '2018-09-08 17:51:04.777');
temporal 값들은 table에 반올림되어 삽입됩니다:
1mysql> SELECT * FROM fractest; 2+-------------+------------------------+------------------------+ 3| c1 | c2 | c3 | 4+-------------+------------------------+------------------------+ 5| 17:51:04.78 | 2018-09-08 17:51:04.78 | 2018-09-08 17:51:04.78 | 6+-------------+------------------------+------------------------+
이러한 반올림이 발생하더라도 warning이나 error는 발생하지 않습니다. 이 동작은 SQL 표준을 따릅니다.
값을 반올림이 아니라 잘라내기(truncation)로 삽입하려면,
TIME_TRUNCATE_FRACTIONAL
SQL mode를 활성화합니다:
1SET @@sql_mode = sys.list_add(@@sql_mode, 'TIME_TRUNCATE_FRACTIONAL');
해당 SQL mode를 활성화하면, temporal 값들은 truncation되어 삽입됩니다:
1mysql> SELECT * FROM fractest; 2+-------------+------------------------+------------------------+ 3| c1 | c2 | c3 | 4+-------------+------------------------+------------------------+ 5| 17:51:04.77 | 2018-09-08 17:51:04.77 | 2018-09-08 17:51:04.77 | 6+-------------+------------------------+------------------------+
temporal 인수를 받는 function은 fractional seconds를 포함하는 값을
허용합니다. temporal function의 반환값은 상황에 따라
fractional seconds를 포함합니다. 예를 들어,
인수가 없는 NOW()는
fractional 부분이 없는 현재 날짜와 시간을 반환하지만,
0에서 6 사이의 선택적 인수를 받아
반환값에 해당 자릿수의 fractional seconds 부분을 포함하도록 할 수 있습니다.
temporal literal 문법은 temporal 값을 생성합니다:
DATE 'str',
TIME 'str',
TIMESTAMP 'str', 그리고
ODBC 문법의 동등한 표현들입니다. 결과 값에는
지정된 경우 끝에 fractional seconds 부분이 포함됩니다. 이전에는
temporal type keyword가 무시되었고 이러한 구문은
문자열 값을 생성했습니다. 자세한 내용은
Standard SQL and ODBC Date and Time Literals를 참조하십시오.
13.2.5 Automatic Initialization and Updating for TIMESTAMP and DATETIME
13.2.7 What Calendar Is Used By MySQL?