SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.07.2010 16:58:39

sito-corito
Завсегдатай
Зарегистрирован: 13.07.2008
Сообщений: 53

Может ли поле с типом DATETIME иметь значение null

Может ли поле с типом DATETIME иметь значение null?
Работаю в php. Есть поле DATETIME, в котором хранится дата и время последних изменений. По умолчанию при вставке данных это поле не заполняется. По умолчанию ставлю тип как null, но все равно при просмотре таблицы обнаруживаю, что данные там записаны в виде 0000-00-00 00-00-00. Поэтому в php делаю проверку такую

Код:

if ($date=='0000-00-00 00-00-00') {  ...   }

Вот я и думаю, может ли этот тип данных установлен в null? И как это можно осуществить?

Неактивен

 

#2 13.07.2010 17:05:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Может ли поле с типом DATETIME иметь значение 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.

Неактивен

 

#3 13.07.2010 18:31:10

sito-corito
Завсегдатай
Зарегистрирован: 13.07.2008
Сообщений: 53

Re: Может ли поле с типом DATETIME иметь значение null

Дело в том, что при вставке данных (а там не только строка с типом DATETIME, а ещё и другие), я это поле вообще пропускаю, не пишу никакой даты. Разница, вроде, большая, когда ты поле пропускаешь и когда ты поле принудительно ставишь как NULL.
Как здесь правильно надо поступать? Есть какие-то правила на этот счёт?

p.s.
Иногда вместо NULL в phpmyadmin получается вставить пустую строку "" (это так в phpmyadmin получается) и mysql выводит ошибку об некорректности вставляемых данных (типа NULL не равен пустой строке). Очень интересно было заметить такую особенность.

Неактивен

 

#4 13.07.2010 20:36:43

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Может ли поле с типом DATETIME иметь значение 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)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson