• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 1. 데이터 형식 요약
    2. 수치형
    3. 날짜와 시간 형
    1. DATE, DATETIME, 그리고 TIMESTAMP 형
    2. TIME형
    3. YEAR형
    4. YEAR (2)의 제한 및 YEAR (4)로 전환
    5. TIMESTAMP 및 DATETIME 자동 초기화 및 업데이트 기능
    6. 시간 값의 소수 초
    7. 날짜 및 시간 형식 간의 변환
    8. 날짜에서 2 자리 연도
    4. 문자열
    5. 공간 데이터의 확장
    6. 데이터 형 기본값
    7. 데이터 유형의 스토리지 요구 사항
    8. 컬럼에 적절한 형태의 선택
    9. 기타 데이터베이스 엔진의 데이터 형식 사용
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

11.3.6 시간 값의 소수 초

MySQL 5.6.4 이전 버전에서는 기간 값을 소수 초 부분이 허용되는 인스턴스는 제한되어 있습니다. 후속 소수 리터럴 값 등의 컨텍스트에서 허용되는 일부 시간 함수의 인수 또는 거기에서 반환 값으로 허용되어 있습니다. 예 :

mysql> SELECT MICROSECOND('2010-12-10 14:12:09.019473'); +-------------------------------------------+ | MICROSECOND('2010-12-10 14:12:09.019473') | +-------------------------------------------+ | 19473 | +-------------------------------------------+

그러나 MySQL은 시간 데이터 유형의 컬럼에 값을 저장하면 소수부를 파기하고 그것을 저장하지 않습니다.

MySQL 5.6.4 이후에서는 마이크로 초 (6 자리)까지의 정확도를 가진 TIME , DATETIME , 그리고 TIMESTAMP 값에 소수 초 지원을 확장하고 있습니다.

  • 소수 초 부분을 포함 컬럼을 정의하려면 type_name ( fsp ) 구문을 사용합니다. 여기에서 type_name 은 TIME , DATETIME 또는 TIMESTAMP 이며, fsp 는 소수 초 정도입니다. 예 :

     CREATE TABLE t1 (t TIME (3) dt DATETIME (6));
    

    fsp 값을 지정하는 경우, 0-6의 범위에 있어야합니다. 0의 값은 소수가 없음을 나타냅니다. 생략하면 기본 정도는 0입니다. (이것은 이전의 MySQL 버전과 호환성을 유지하기 위해 표준 SQL의 기본 인 6과 다릅니다.)

  • 소수 초 부분을 가진 TIME , DATE 또는 TIMESTAMP 값을 같은 형태의 컬럼에 삽입하지만, 소수 자릿수가 적은 경우, 다음의 예와 같이 반올림이 이루어집니다.

    mysql> CREATE TABLE fractest( c1 TIME(2), c2 DATETIME(2), c3 TIMESTAMP(2) );
    Query OK, 0 rows affected (0.33 sec)
    
    mysql> INSERT INTO fractest VALUES 
         > ('17:51:04.777', '2014-09-08 17:51:04.777', '2014-09-08 17:51:04.777');
    Query OK, 1 row affected (0.03 sec)
    
    mysql> SELECT * FROM fractest;
    +-------------+------------------------+------------------------+
    | c1          | c2                     | c3                     |
    +-------------+------------------------+------------------------+
    | 17:51:04.78 | 2014-09-08 17:51:04.78 | 2014-09-08 17:51:04.78 |
    +-------------+------------------------+------------------------+
    1 row in set (0.00 sec)
    

    이러한 반올림했을 때에 경고 나 오류가 표시되지 않습니다. 이 동작은 SQL 표준에 따라 서버 sql_mode 설정의 영향을받지 않습니다.

  • 시간 인수를 취하는 함수는 초 부분을 포함한 값을 받아들입니다. 시간 함수의 반환 값은 필요에 따라 소수 초이 포함됩니다. 예를 들어, 인수없이 NOW() 는 소수 부분이없는 현재의 날짜와 시간을 반환하지만 0-6의 옵션 인수를 가지고 그 자리수의 소수 초 부분이 반환 값에 포함되어있는 수를 지정합니다.

  • 시간 리터럴 구문은 DATE ' str ' , TIME ' str ' 및 TIMESTAMP ' str ' 시간 값과 ODBC 구문 동등한 값을 얻을 수 있습니다. 지정되는 경우 결과 값은 후속 소수 초 부분이 포함됩니다. 이전에는 시간 형 키워드는 무시되고 이러한 구조는 문자열 값을 생성하고있었습니다. 표준 SQL과 ODBC 날짜 및 시간 리터럴 을 참조하십시오.

경우에 따라서는 이전에 받아 들여지고 구문이 다른 결과를 생성 할 수 있습니다. 다음 항목은 문제를 해결하기 위해 기존 코드의 어느 부분을 변경해야하는 여부를 나타냅니다.

  • 행사 기간 동안 이전의 결과와는 다른 결과를 생성하는 것이 있습니다. 예 : timestamp 시스템 변수는 정수가 아닌 마이크로 초 소수가 포함 된 값을 반환합니다. 현재 시간을 포함하는 결과를 반환하는 함수 ( CURTIME() , SYSDATE() , UTC_TIMESTAMP() 등)는 fsp 값으로 인수를 해석하고, 반환 값은 그 자리의 소수 초 부분이 포함됩니다. 이전에는 이러한 함수는 인수를 허용하지했지만 무시하고있었습니다.

  • TIME 값은 현재 날짜에 시간을 추가함으로써 DATETIME 으로 변환됩니다. (이것은 시간 값이 '00:00:00' 에서 '23:59:59' 의 범위를 벗어난 경우, 결과의 날짜 부분이 현재의 날짜와 다르다는 것을 의미합니다.) 이전에 은 TIME 값의 DATETIME 으로 변환 신뢰성이 없습니다. 섹션 11.3.7 "날짜 및 시간 형식 간의 변환" 을 참조하십시오.

  • TIMESTAMP( N ) 은 이전 MySQL 버전에서 허용되고 있었지만, N 은 소수 초 정도가 아니라 표시 폭이었습니다. 이 동작의 지원은 MySQL 5.5.3에서 폐지 되었기 때문에 비교적 최신 상태로 유지되고있는 어플리케이션이면이 문제의 영향을받지 않습니다. 그렇지 않으면이 코드를 다시 작성해야합니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved