Документация MySQL
; согласно стандарту ANSI SQL,
никакой другой формат не допускается. Пользователь должен применять этот
формат в выражениях
.
Например:
Из соображений удобства MySQL автоматически преобразовывает дату в число,
если дата используется в числовом контексте (и наоборот). Благодаря своей
''разумности'' MySQL допускает также ''мягкую'' строковую форму при обновлении
и в определении
, сравнивающем дату со столбцом типа
TIMESTAMP, DATE
("мягкая" форма означает, что для разделения составляющих
даты можно использовать любой знак пунктуации; например,
эквивалентны). MySQL может также преобразовывать в даты
строки, не содержащие разделителей (наподобие
), при условии,
что представляемая строкой дата не лишена смысла.
. При использовании даты
MyODBC 2.50.12
и выше, так как
не обеспечивает обработку такого рода дат.
Поскольку в MySQL выполняются описанные выше преобразования, следующие
команды будут работать:
mysql> INSERT INTO tbl_name (idate) VALUES (19970505);
mysql> INSERT INTO tbl_name (idate) VALUES ('19970505');
mysql> INSERT INTO tbl_name (idate) VALUES ('97-05-05');
mysql> INSERT INTO tbl_name (idate) VALUES ('1997.05.05');
mysql> INSERT INTO tbl_name (idate) VALUES ('1997 05 05');
mysql> INSERT INTO tbl_name (idate) VALUES ('0000-00-00');
mysql> SELECT idate FROM tbl_name WHERE idate >= '1997-05-05';
mysql> SELECT idate FROM tbl_name WHERE idate >= 19970505;
mysql> SELECT MOD(idate,100) FROM tbl_name WHERE idate >= 19970505;
mysql> SELECT idate FROM tbl_name WHERE idate >= '19970505';
mysql> SELECT idate FROM tbl_name WHERE STRCMP(idate,'19970505')=0;
- строковая функция, следовательно, она преобразует
в
строку и сравнивает строки. Функция не станет преобразовывать
в
дату и сравнивать даты.
Заметим, что MySQL не проверяет правильности дат, поэтому такая
некорректная дата, как
, будет занесена в базу. Если же дату
нельзя преобразовать в какое-нибудь разумное значение, в поле типа
заносится 0. Проверка правильности дат не делается - в основном из
соображений, связанных со скоростью: мы считаем, что проверкой дат должно
заниматься приложение, а не сервер.
Рубрики: Без рубрики |

