Freelance Software Consultant

  • Twitter
  • Google Plus

kontakt@cqueiser.de

  • Home
  • Über mich
  • Artikel
  • Kontakt

MySQL Date NOT NULL DEFAULT ‘0000-00-00’

Posted:
18.08.2017

Tags:
jdbc, mysql, not-null, null

Comments: 0

Im Gegensatz zu PostgreSQL ist in der MySQL Version 5.6.36 ein Tabellenfeld mit dieser Definition zulässig:

Feldname Typ Null Defaultwert
id Int No auto_increment
date Date No 0000-00-00

Der Wert 0000-00-00 ist kein valides Datumsformat, wird von MySQL trotzdem akzeptiert.

INSERT INTO foo (date) VALUES ('0000-00-00'); ✅ 
INSERT INTO foo (date) VALUES ('NULL'); ✅
INSERT INTO foo (date) VALUES ('2000-00-00); ✅
INSERT INTO foo (date) VALUES (NULL); ❌

In einem MySQL-Tool (ausser IntelliJ, dafür aber z.B. SequelPro, MySQLWorkbench oder PHPMyAdmin) werden folgende Ergebnisse geliefert:

SELECT * FROM foo;
id date
1 0000-00-00
2 0000-00-00
3 2000-00-00
 SELECT * FROM foo WHERE date IS NULL;
id date
1 0000-00-00
2 0000-00-00
3 2000-00-00
 SELECT * FROM foo WHERE date IS NOT NULL;
id date
1 0000-00-00
2 0000-00-00
3 2000-00-00

In dem Datenbanken-Tool der Entwicklungsumgebung IntelliJ von JetBrains werden andere Ergebnisse geliefert. Sie sehen wie folgt aus:

SELECT * FROM foo;
id date
1 <null>
2 <null>
3 1999-11-30
 SELECT * FROM foo WHERE date IS NULL;
id date
1 <null>
2 <null>
 SELECT * FROM foo WHERE date IS NOT NULL;
id date
1 <null>
2 <null>
3 1999-11-30

Der Grund für diese Abweichung liegt in der Implementierung von IntelliJ. Die Entwicklungsumgebung basiert auf Java und nutzt einen JDBC (Java Database Connectivity) Treiber. Der JDBC versucht das invalide Datum zu verstehen, kann es aber nicht und mit der standardmäßigen Einstellung jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull wird der nicht zu verstehende Wert in den Wert null konvertiert. Das ist auch der Grund dafür, weshalb das invalide Datum 2000-00-00 zu einem validen Datum 1999-11-30 umgeformt wird.


  • jdbc
  • mysql
  • not-null
  • null

Share This Post

  • Facebook
  • Twitter
  • Google Plus

About

cqueiser

Christopher Queiser – Freiberuflicher Software-Developer. Spezialisiert in PHP / Symfony in Version 3 und 4 & Wordpress. Seine letzte Herausforderung war ein Master of Science in "IT-Management" FOM.

Related Posts

Leave A Comment

Click here to cancel reply.

Name*

Mail*

Website

Recent Posts

  • SchemaManagementException
  • Das Runde muss ins Eckige
  • MySQL Date NOT NULL DEFAULT ‘0000-00-00’
  • PHP var_dump(0123)
  • PageSpeed

Archives

  • February 2020
  • December 2018
  • August 2017
  • March 2017
  • October 2013

Categories

  • Uncategorized
  • Home
  • Kontakt
  • Impressum
  • Datenschutzerklärung

Blücherstrasse 22, 10961 Berlin, Deutschland

E-mail: kontakt@cqueiser.de

Soziale Präsenz


  • Twitter
  • Google Plus

Copyright © 2016 cqueiser.de

We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.OkRead more