MySQL robi zezwól na NULL wartości dla datetime pola. Właśnie to przetestowałem:
mysql> create table datetimetest (testcolumn datetime null default null);
Query OK, 0 rows affected (0.10 sec)
mysql> insert into datetimetest (testcolumn) values (null);
Query OK, 1 row affected (0.00 sec)
mysql> select * from datetimetest;
+------------+
| testcolumn |
+------------+
| NULL |
+------------+
1 row in set (0.00 sec)
Używam tej wersji:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.45 |
+-----------+
1 row in set (0.03 sec)
EDYCJA #1:Widzę w twojej edycji, że komunikat o błędzie, który otrzymujesz w PHP wskazuje, że przekazujesz pusty ciąg (tj. '' ), a nie null . Pusty ciąg różni się od null i nie jest prawidłową datetime wartość, dlatego otrzymujesz ten komunikat o błędzie. Musisz przekazać specjalne słowo kluczowe sql null Jeśli o to ci chodzi. Nie umieszczaj także cudzysłowów wokół słowa null . Zobacz moją insert powyżej, aby zobaczyć przykład, jak wstawić null .
EDYCJA #2:Czy używasz PDO? Jeśli tak, podczas wiązania swojego null param upewnij się, że używasz [PDO::PARAM_NULL][1] wpisz podczas wiązania null . Zobacz odpowiedź na to pytanie o przepełnienie stosu
jak poprawnie wstawić null za pomocą PDO.