Задавайте вопросы, мы ответим
Вы не зашли.
Может ли поле с типом DATETIME иметь значение null?
Работаю в php. Есть поле DATETIME, в котором хранится дата и время последних изменений. По умолчанию при вставке данных это поле не заполняется. По умолчанию ставлю тип как null, но все равно при просмотре таблицы обнаруживаю, что данные там записаны в виде 0000-00-00 00-00-00. Поэтому в php делаю проверку такую
if ($date=='0000-00-00 00-00-00') { ... }
Вот я и думаю, может ли этот тип данных установлен в null? И как это можно осуществить?
Неактивен
[celestia] root test > create table dtn (a datetime); Query OK, 0 rows affected (0.22 sec) [celestia] root test > insert dtn values (NULL); Query OK, 1 row affected (0.00 sec) [celestia] root test > select * from dtn; +------+ | a | +------+ | NULL | +------+ 1 row in set (0.00 sec)
Скорее всего, у Вас поле DATETIME NOT NULL.
Неактивен
Дело в том, что при вставке данных (а там не только строка с типом DATETIME, а ещё и другие), я это поле вообще пропускаю, не пишу никакой даты. Разница, вроде, большая, когда ты поле пропускаешь и когда ты поле принудительно ставишь как NULL.
Как здесь правильно надо поступать? Есть какие-то правила на этот счёт?
p.s.
Иногда вместо NULL в phpmyadmin получается вставить пустую строку "" (это так в phpmyadmin получается) и mysql выводит ошибку об некорректности вставляемых данных (типа NULL не равен пустой строке). Очень интересно было заметить такую особенность.
Неактивен
Ничего не вставлять — правильно. А вставлять пустую строку — нет:
[celestia] root test > drop table dtn; Query OK, 0 rows affected (0.06 sec) [celestia] root test > create table dtn (a datetime, b int); Query OK, 0 rows affected (0.23 sec) [celestia] root test > insert into dtn (b) values (1); Query OK, 1 row affected (0.00 sec) [celestia] root test > insert into dtn (a, b) values ('', 1); Query OK, 1 row affected, 1 warning (0.00 sec) [celestia] root test > select * from dtn; +---------------------+------+ | a | b | +---------------------+------+ | NULL | 1 | | 0000-00-00 00:00:00 | 1 | +---------------------+------+ 2 rows in set (0.00 sec)
Неактивен