|
Тема
|
MySQL DATE datatype
|
|
Автор |
bandy (непознат
) |
Публикувано | 26.01.06 19:34 |
|
Привет,
Имам въпрос: МъСЯЛ прави ли проверки за полета, които са от тип "дата".
Пробвах да вкавам запис със тойност '2006-02-30' във версии на МъСЯЛ:
4.0.25. 4.1.15, 5.0.18
При версиите 4.х записът си влезе като стой та гледай без никакви грешки от страна на МъСЯЛ, дори след това при СЕЛЕКТ си ги показва така както са вкарани.
При версия 5.0 го вкара като '0000-00-00'.
Ако вкарвам записите използвайки вградената функция (НОВ() + интервал ХХ дена) правилно изчислява датите и вкарва записите '2006-03-02' например.
Та, въпросът е - прави ли проверка за правилност на типа данни (явно 4.ь версиите не правят)?
Би ли могло да се включи таква проверка (която явно съществува при функцията " интервал "), да работи постояяно и когато се опита някой да вкара запис "2006-02-30", той автоматично да го конвертира до съответната правилна стойност ("2006-03-02", за невисокосна година, и "2006-03-01" за високосна)?
Това бъг ли е, или е нормално такова поведение на базата.
Благодаря предварително за отделеното внимание ;)
Поздрави!
| |
Тема
|
Re:Кой е МъСЯЛ?
[re: bandy]
|
|
Автор |
salle (един такъв) |
Публикувано | 27.01.06 09:03 |
|
То си пише ама някой трябва да чете ...
mysql> CREATE TABLE d (d DATE);
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO d VALUES('2006-02-30');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'd' at row 1 |
+---------+------+----------------------------------------+
mysql> SET SQL_MODE=TRADITIONAL;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO d VALUES('2006-02-30');
ERROR 1292 (22007): Incorrect date value: '2006-02-30' for column 'd' at row 1
| |
|
|
|
|