Newsgroup: it.comp.www.php
Titolo: Date in mySql

Salve, volevo sapere come si cambia il formato della data in MySql. Se uso 
il tipo variabile DATE mi memorizza la data in aaaa-mm-gg io vorrei invece 
gg-mm-aaaa. Conviene fare tale conversione in mySql o direttamente nel 
codice PHP?
Grazie
Paolo 

 Paolo 
-- 
SEZIONE DIVERTIMENTO & AFFINI: "Qual è il poliziotto più sfortunato? 
Quello che muore al posto di  blocco. E quello più fortunato? Blocco!"
[CapoBecchino] - hotmail/msn: capobecchino [@] hotmail [.] com

Paolo ha scritto:

Conviene fare la conversione da PHP, nel db lascia il formato standard.
raenkrus

 Conviene fare la conversione da PHP, nel db lascia il formato standard.
Secondo me conviene utilizzare l'apposita funzione di mysql, in fase di 
query:
DATE_FORMAT(date,format)
Formats the date value according to the format string.
The following specifiers may be used in the format string. The ‘%’ 
character is required before format specifier characters.
	Francesco F

Potresti spiegarmi meglio come applicare questa funzione in una pagina PHP?
Quando devo fare tale query? Dopo mi cambia per sempre il formato della 
data? Grazie ancora 


Nel database il formato della data resta e deve restare yyyy-mm-dd, 
quindi se fai una select field_data from table, ti visualizzerà sempre e 
comunque 2005-09-23
Se vuoi la data formattata hai due possibilita:
1)
$s = "select field_data from table";
$r = mysql_query($s);
echo mysql_result($s,0,'field_data');
che ti visualizza: 2005-06-23
per portarla in formato IT potesti fare via PHP un explode e 
concatenazione oppure 3 substr
$a = explode ("-", mysql_result($s,0,'field_data'));
printf("%02d-%02d-%04d", $a[2], $a[1], $a[0]);
2)
$s = "select DATE_FORMAT(field_data, '%d-%m-%Y') as ITdata from table";
$r = mysql_query($s);
echo mysql_result($s,0,'ITdata');
che ti visualizza: 23-06-2005
	Francesco
 

Paolo ha scritto:

Tramite PHP ovviamente, perchè il formato del mysql è uno standard.
In PHP basta fare:
echo date('d-m-Y',strtotime($rs['data_in_formato_standard']));
Ciao,
   Fabrizio

 Tramite PHP ovviamente, perchè il formato del mysql è uno standard.
Beh, °ovviamente° mi pare proprio la risposta sbagliata!
Si può fare via database, allora perchè scomodare il php?
	Francesco

Francesco F ha scritto:

Semplicemente perchè evito, per quanto possibile, tutto quello che è
database-dipendente (in questo caso sql-dipendente).
Se un giorno usassi un altro db, probabilmente dovrei mettere mano a
tutte le stringhe sql simili a quella.

 
Per questo hanno inventato le classi per l'astrazione del db :-)
Senza contare che scrivere codice sql (semplice) non ti garantisce la 
compatibilità tra altri db (e si torna al discorso dell'astrazione)
	Francesco

 compatibilità tra altri db (e si torna al discorso dell'astrazione)
Sicuro. Però se lo scrivo il più aderente possibile allo standard,
probabilmente riuscirò a garantire la compatibilità.
Ciao,
    Fabrizio

 Quindi a livello di codice, cioè in PHP. -)
Se il dmbs non prevede tale funzione, altrimenti usa la funzione nativa
Poi, il tutto si risolve con un certo stile di programmazione e, in 
merito a tale osservazione, ho dato la mia opinione.
Il database non può essere considerato solo un "contenitore" di dati ma 
bisogna (ripeto, mia opinione) andare oltre. Se ha delle funzioni che 
rendono la vita più semplice e il codice più pulito, perche' non 
utilizzarlo?
Io preferisco un sql concat(cognome, ' ', nome) as txt_nominativo 
rispetto a un php $row['cognome'] . " " . $row['nome']
 > Sicuro. Però se lo scrivo il più aderente possibile allo standard,
 > probabilmente riuscirò a garantire la compatibilità.
Se prevedi di cambiare db, usa l'astrazione
	Francesco