![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Может ли поле с типом 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)Неактивен