Mysql принимает нулевой месяц в столбце даты !? Пожалуйста, объясни - PullRequest
0 голосов
/ 14 февраля 2020

MySQL 5.6 - мы поговорили с одним из разработчиков и нашли что-то очень любопытное - не смогли найти что-либо об этом в Google:

create temporary table md (dates date);
insert into md select '2000-01-01'; -- result: 2000-01-01
insert into md select '2000-00-01'; -- result: 1999-12-01 ????
insert into md select '2000-00-00'; -- result: 1999-11-30 ????
insert into md select '2000-01-00'; -- result: 1999-12-31 ????
insert into md select '2000-13-01'; -- result: EXPECTED: SQL Error [1292] [22001]: Data truncation: Incorrect date value: '2000-13-01' for column 'dates' at row 1
insert into md select '2000-12-49'; -- result: EXPECTED: SQL Error [1292] [22001]: Data truncation: Incorrect date value: '2000-12-49' for column 'dates' at row 1

Может кто-нибудь объяснить, пожалуйста?

  1. Почему это позволяет этому случиться? Стоит выбросить ту же ошибку выдачи данных imho.
  2. Документация?
  3. Каков точный логин c за этим?

    a) Месяц 00 в предыдущем месяце того же дня?

    б) День 00 предыдущего месяца последний день?

    c) оба 00-00 предыдущего дня предыдущего месяца 'последний день?

Спасибо!

1 Ответ

2 голосов
/ 14 февраля 2020

https://dev.mysql.com/doc/refman/8.0/en/using-date.html

MySQL позволяет хранить даты, когда день или месяц и день равны нулю. Это удобно, если вы хотите сохранить дату рождения в столбце DATE и знаете только часть даты. Чтобы запретить нулевые части месяца или дня в датах, включите режим NO_ZERO_IN_DATE.

...