• 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.7 날짜 및 시간 형식 간의 변환

어느 정도까지의 시간 형식에서 다른 시간 형식으로 값을 변환 할 수 있습니다. 그러나 값의 변경이나 정보의 손실이 발생할 수 있습니다. 어떤 경우에도 시간 형 간의 변환은 변환되는 형태로 유효한 값의 범위에 따라 달라집니다. 예를 들어, DATE , DATETIME , 그리고 TIMESTAMP 값은 동일한 세트의 형식을 사용하여 지정할 수 있지만, 모든 형태의 값의 범위가 같은 것은 없습니다. TIMESTAMP 값은 1970 UTC 이전 값으로하고, '2038-01-19 03:14:07' UTC보다 새로운 값으로 할 수 없습니다. 즉, '1968-01-01' 등의 날짜는 DATE 또는 DATETIME 값은 유효하지만 TIMESTAMP 값은 유효 아니라 0 으로 변환됩니다.

DATE 값의 변환 :

  • DATE 값은 시간 정보가 포함되지 않기 때문에, DATETIME 또는 TIMESTAMP 값으로 변환하면 '00:00:00' 의 시간 부분이 추가됩니다.

  • TIME 값으로 변환 유용하지 않습니다. 결과는 '00:00:00' 입니다.

DATETIME 과 TIMESTAMP 값의 변환 :

  • DATE 형은 시간 정보가 포함되지 않기 때문에 DATE 값으로 변환하면 시간 부분이 삭제됩니다.

  • TIME 형은 날짜 정보가 포함되지 않기 때문에, TIME 값으로 변환하면 날짜 부분이 삭제됩니다.

TIME 값 외에 시간 형식으로 변환은 버전에 따라 다릅니다.

  • MySQL 5.6.4 이후에서는 CURRENT_DATE() 의 값이 날짜 부분에 사용됩니다. TIME (시간이 아니라) 경과 시간으로 해석됩니다 날짜에 추가됩니다. 이것은 시간 값이 '00:00:00' 에서 '23:59:59' 의 범위를 벗어난 경우 결과의 날짜 부분이 현재의 날짜와 다르다는 것을 의미합니다.

    현재 날짜가 '2012-01-01' 이라고합니다. '12:00:00' , '24:00:00' , '-12:00:00' 의 TIME 값은 DATETIME 또는 TIMESTAMP 값으로 변환되면 각각 '2012-01-01 12:00:00' , '2012-01-02 00:00:00' , '2011-12-31 12:00:00' 입니다.

    TIME 에서 DATE 로 변환하는 것도 비슷하지만 결과에서 시간 부분이 삭제되고 각각 '2012-01-01' , '2012-01-02' , '2011-12-31' 입니다.

  • 5.6.4 이전의 MySQL에서는 시간의 문자열을 날짜 또는 시간으로 분석하여 시간 값을 날짜 또는 시간 값으로 변환합니다. 이것이 도움이 될 수는 없습니다. 예를 들어, '23:12:31' 은 날짜로 해석되면 '2023-12-31' 입니다. 날짜 유효하지 않은 시간은 '0000-00-00' 또는 NULL 입니다.

명시 적 변환을 사용하여 암시 적 변환을 무시할 수 있습니다. 예를 들어 DATE 및 DATETIME 값의 비교에서 DATE 값은 '00:00:00' 의 시간 부분을 추가하여 강제로 DATETIME 형으로 변경됩니다. 대신 DATETIME 값의 시간 부분을 무시하고 비교를 실행하려면 다음과 같이 CAST() 함수를 사용합니다.

 date_col = CAST ( datetime_col AS DATE)

TIME 및 DATETIME 값의 수치 형식으로 ( +0 추가 등에 의한) 변환은 다음과 같이 이루어집니다.

  • MySQL 5.6.4 이후에서는 TIME( N ) 또는 DATETIME( N ) 는 N 이 0 (또는 생략)의 경우 정수에 N 이 양수의 경우 N 의 10 진수를 포함 DECIMAL 값으로 변환되고 합니다.

    mysql> SELECT CURTIME(), CURTIME()+0, CURTIME(3)+0;
    +-----------+-------------+--------------+
    | CURTIME() | CURTIME()+0 | CURTIME(3)+0 |
    +-----------+-------------+--------------+
    | 09:28:00  |       92800 |    92800.887 |
    +-----------+-------------+--------------+
    mysql> SELECT NOW(), NOW()+0, NOW(3)+0;
    +---------------------+----------------+--------------------+
    | NOW()               | NOW()+0        | NOW(3)+0           |
    +---------------------+----------------+--------------------+
    | 2012-08-15 09:28:00 | 20120815092800 | 20120815092800.889 |
    +---------------------+----------------+--------------------+
    
  • MySQL 5.6.4 이전에는, 변환의 결과는 마이크로 초 부분이 .000000 인 배정 밀도 값입니다.

    mysql> SELECT CURTIME(), CURTIME()+0;
    +-----------+--------------+
    | CURTIME() | CURTIME()+0  |
    +-----------+--------------+
    | 09:28:00  | 92800.000000 |
    +-----------+--------------+
    mysql> SELECT NOW(), NOW()+0;
    +---------------------+-----------------------+
    | NOW()               | NOW()+0               |
    +---------------------+-----------------------+
    | 2012-08-15 09:28:00 | 20120815092800.000000 |
    +---------------------+-----------------------+
    


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