DB/mysql

[mysql]00월 00일 입력?

  • -
반응형

이번 포스트에서는 mysql의 날짜 포멧에 있는 00월 00일에 대해서 살펴보자.

 

00월 00일이란?

 

날짜 포멧과 00월 00일

mysql의 날짜 포멧 문서(https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format)를 살펴보면 %m이 Month, numeric (00..12)를 의미하고 %d는 Day of the month, numeric (00..31)를 의미한다. 그냥 넘어갈 수 있는데 00부터 시작하는게 신기하다. 00~11이 라면 이해 되는데 00~12라니..

참고로 oracle의 MM은 01~12이다.

mysql에서 이런 입력이 가능한 이유는 mysql에서 불완전한 날짜의 입력을 허용하기 때문이다.

Ranges for the month and day specifiers begin with zero due to the fact that MySQL permits the storing of incomplete dates such as 
'2014-00-00'

 

NO-ZERO_DATE

하지만 막상 다음과 같이 입력하려면 오류가 발생한다.

create table test(
	birth date primary key
);
insert into test values('2000-00-00');
-- Error Code: 1292. Incorrect date value: '2000-00-00' for column 'birth' at row 1

zero date를 입력하기 위해서는 SQL_MODE에 NO_ZERO_DATE가 없어야 한다.

set @@SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

위와 같이 SQL_MODE를 변경 후 다시 insert를 하면 잘 들어간다.

 

NO-ZERO_DATE는 deprecated 예정

하지만 위 속성 자체는 deprecated 내용이다. 아마도 하위 호환성을 위해서 존재하는 속성인듯 싶다. ZERO_DATE 관련된 내용은 앞으로 없어지지 않을까 한다.

00월 00일이라니 생각만해도 엉뚱하다.

 

반응형

'DB > mysql' 카테고리의 다른 글

[sakila] 기본 쿼리 연습  (0) 2024.03.13
[mysql]알아두면 유용한 설정  (0) 2023.02.05
[sql] Null의 연산  (0) 2023.01.31
[mysql 설정] ONLY_FULL_GROUP_BY  (0) 2022.09.13
[sql]grouping 함수 사용법  (0) 2021.04.16
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.