SQL Datetimespalte "nullen"

Skidrow1988

Lt. Commander Pro
Registriert
Nov. 2014
Beiträge
1.047
Guten Tag an alle,

ich habe einen neuen Rechner bekommen und XAMP installiert. Dort nutze ich MariaDB (10.3.38) als Datenbank. Nun zum eigentlichen Problem, wenn es überhaupt eins ist. Vorher konnte ich eine Datetime-Spalte nullen, wenn ich einen leeren String übergebe. Dies geht nun in der Version nicht mehr. Ist das lediglich eine Einstellung oder liegt es einfach an einer anderen Version. Kann das leider nicht überprüfen da der andere Rechner nicht läuft.

Vielen Dank !
 
Du meinst mit nullen eine 0 oder null ?
Letzteres kannst Du in den SQL-Abfragen über ISNULL Parameter behandeln.
 
@Kristatos: Ich gehe davon aus: Er will via INSERT oder UPDATE etwas in die Datenbank schreiben, und das Datum ist ein Leerstring, und früher wurde da wohl "null" dann reingeschrieben.
 
Wenn ich vorher als Update Statement folgendes geschrieben habe:
UPDATE xyz SET datum = '' WHERE id = 1

Wurde die Datetime-Spalte datum auf '0000-00-00 00:00:00' gesetzt. Nun muss ich folgendes machen.

UPDATE xyz SET datum = '0000-00-00 00:00:00' WHERE id = 1

Sonst entsteht ein Fehler
 
Skidrow1988 schrieb:
Wurde die Datetime-Spalte datum auf '0000-00-00 00:00:00' gesetzt. Nun muss ich folgendes machen.

Nur eine Vermutung, aber vielleicht liegt hier der Grund begraben und gar nicht am empty string selbst. Es gibt ein Setting NO_ZERO_DATE:

https://mariadb.com/kb/en/sql-mode/#no_zero_date

Don't allow '0000-00-00' as a valid date in strict mode (produce a 1525 error). Zero dates can be inserted with IGNORE. If not in strict mode, a warning is generated.

Betrifft zwar date, aber datetime ist ggf. auf betroffen.

edit: aber ne, dann würde dein explizites Update auf 0000-00-00 00:00:00 auch nicht gehen.

Es ist aber so oder so kein schlechter Stil, das Datum auch explizit auf den Wert zu setzen, den man haben möchte.
 
Also ich würde auch schauen, dass der Wert explizit gesetzt wird, den man haben will.
Ich frage mich da auch, wieso man die Spalte nicht nullable macht.
 
Zurück
Oben