Pagina 1 di 2

Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 2:51
da Daniele78
Salve a tutti,
il mio programma memorizza i campi data vuoti come '0000-00-00'. Dopo gli aggiornamenti software ho iniziato ad avere il seguente errore MySql: Incorrect date value for ... quando tenta di salvare il valore '0000-00-00'.
Come posso risolvere il problema?
Grazie!

Re: Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 7:31
da boiler
Devi passargli una data valida. Il giorno deve essere compreso tra 01 e 31, il mese tra 01 e 12 e l'anno tra 1000 e 9999.

Saluti, Boiler

Re: Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 10:44
da rugweri
Nella gestione di un database, è considerato obbligatorio l'utilizzo di un valore NULL univocamente definito (SQL ne definisce uno, per la cronaca) e non legato ad alcun dominio per identificare i campi vuoti; è invece fortemente scoraggiato (anzi, per simmetria direi vietato) l'utilizzo di un valore del dominio come identificativo per i campi vuoti.

Re: Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 11:39
da IlGuru
Com'è definita la tabella che contiene quel campo?

Re: Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 12:21
da Daniele78
La tabella è questa:

CREATE TABLE `persona` (
`idpers` int(11) NOT NULL,
`lastname` varchar(200) NOT NULL,
`firstname` varchar(200) DEFAULT NULL,
`borndate` date DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

L' utente può scegliere se o non inserire la data di nascita.

Tutti i campi data vuoti, anche in altre tabelle sono stati sempre salvati come '0000-00-00'.

Re: Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 13:06
da IlGuru
Forse per inserire il valore nullo va specificato borndate=NULL o borndate='' e non borndate='0000-00-00'

Re: Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 13:28
da Daniele78
Solo borndate=NULL funziona e viene salvato NULL.
Il problema è che le query vengono gestite con PDO per cui devo necessariamente passare una stringa.

Re: Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 13:30
da IlGuru
borndate glielo devi passare per forza o puoi ometterlo nella query di insert?

Re: Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 13:39
da Daniele78
Significherebbe utilizzare utilizzare due differenti query a seconda del caso data inserita oppure no. Comunque avrei lo stesso il problema nella query di update dove dovrà necessariamente essere presente il campo borndate.

Re: Mysql salvare campo data vuoto.

MessaggioInviato: 11 dic 2017, 14:01
da rugweri
Daniele78 ha scritto:Il problema è che le query vengono gestite con PDO per cui devo necessariamente passare una stringa.


Se PDO (che non conosco, ma essendo un'estensione per PHP - sull'infima qualità del quale quale personaggi ben più qualificati di me si sono abbondantemente espressi - temo il peggio) ti richiede per forza una stringa, PDO viola una delle regole di base che si insegnano fin dal primo contatto con un database a tutti gli studenti di materie informatiche; segue che PDO risulta pertanto inutilizzabile e va, se possibile, abolito.

Daniele78 ha scritto:Significherebbe utilizzare utilizzare due differenti query a seconda del caso data inserita oppure no. Comunque avrei lo stesso il problema nella query di update dove dovrà necessariamente essere presente il campo borndate.

Dovresti scrivere due query (cosa che mi suona un po' strana, comunque)? Allora mi sa che ti conviene iniziare :mrgreen: Se la situazione è esattamente come la descrivi, non c'è altro modo (non immediatamente, almeno) di realizzare una gestione corretta del database.