Mysql
 sql >> Database >  >> RDS >> Mysql

Data in un URL gg/mm/aaaa

Quando si utilizza strotime() devi assicurarti di utilizzare un formato datetime valido . Altrimenti strtotime() restituirà false o darti un valore inaspettato.

Si presume che le date che utilizzano il formato XX/XX/XXXX siano nel formato USA, il che significa che le prime due cifre rappresentano il mese, le due cifre successive rappresentano il giorno del mese e le ultime quattro cifre rappresentano l'anno. Quando vengono utilizzati i trattini, si presume che le date siano in formato europeo. Ad esempio:

04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017

Se cambi accidentalmente giorno e mese strtotime() restituirà false poiché la data non è valida.

18/04/2017 // error
18/12/2017 // error
04-18-2018 // error
12-18-2017 // error

Gli esempi di cui sopra sono diretti. Ma puoi incorrere in problemi quando le date possono essere ambigue. Ad esempio:

04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017

Negli esempi precedenti, cambiando giorno e mese otteniamo ancora date valide che possono causare risultati imprevisti nella tua applicazione. Per risolvere questi potenziali problemi si consiglia di utilizzare DateTime::createFromFormat() per analizzare l'annuncio della data restituire un DateTime() oggetto da cui è possibile ottenere un timestamp Unix , convertire la data in un altro formato o usalo per confrontarlo con altri DateTime oggetti.

// Parse US date format
$date1 = DateTime::createFromFormat('m/d/Y', '04/18/2017');

// Get Unix timestamp of 1493581268
$timestamp = $date1->getTimestamp();

// Parse European date format
$date2 = DateTime::createFromFormat('d-m-Y', ''18-04-2017);

// Get MySQL format (ISO-8601) of 2017-04-18
$mysqlDate = $date2->format('Y-m-d');

Vedi anche:

Per il tuo caso specifico, il seguente codice funzionerà:

$date = $date1 = DateTime::createFromFormat('m/d/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20