ordinamento per data

Ciao a tutti ho un problema nell'ordinare i dati estratti da un db, dovrei ordinarli per data;

la da ta la ottengo così:

$g=date("d");
$me=date("m");
$a=date("y");
$data = "$g/$me/$a";

inserita nel db in un campo VARCHAR (250)

...purtroppo i dati non vengono ordinati!

qualche suggerimento??

grazie

inviato 9 anni fa
yusizu
X 0 X

Se puoi cambia il campo da VARCHAR a DATE

oppure crea un altro campo DATE ( nella stessa tabella ) e mettici i valori che hai in quello varchar, occhio che devi cambiare il formato da quello che hai attualmente (giorno/mese/anno) a anno-mese-giorno (yyyy-mm-dd)

e, successivamente gli inserimenti li farai in questo nuovo campo date e nno + in quello varchar

Spero di non essere stato troppo incasinato  :P

ciao

Lore

risposto 9 anni fa
Lore
Lore
1
X 0 X

Graize Lore, avevo intuito che il problema fosse quello ovvero "giustamente" mysql mi tratta la data come una stringa....

ora, come faccio a convertire la data gg/mm/aa   in  yyyy/mm/dd   ?

pensavo come mi hai suggerito, di affiancare un altro campo date (con il suo vero formato) e fare l'ordinamento in base a questo nuovo campo, pur restituendomi il valore gg/mm/an che l'utente inserisce

grazie

risposto 9 anni fa
yusizu
X 0 X

fai una cosa

il campo lo fai varchar

poi usa questo codice per la data

$data = date ('Y/m/d');

ti stampa il valore come lo vuoi tu anno mese giorno

risposto 9 anni fa
SuperSavio
X 0 X

si ma se lo lascio varchar non potrò ordinarlo o sbaglio?

risposto 9 anni fa
yusizu
X 0 X

Graize Lore, avevo intuito che il problema fosse quello ovvero "giustamente" mysql mi tratta la data come una stringa....

ora, come faccio a convertire la data gg/mm/aa   in  yyyy/mm/dd   ?

pensavo come mi hai suggerito, di affiancare un altro campo date (con il suo vero formato) e fare l'ordinamento in base a questo nuovo campo, pur restituendomi il valore gg/mm/an che l'utente inserisce

grazie

Dovresti utilizzare le funzioni substring e concat di mysql a quest'indirizzo:

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

Ad esempio, facendo conto che nel tuo campo varchar hai una data del tipo 12/10/2006 ( come hai scritto sopra $data = "$g/$me/$a";):

UPDATE tabella SET campo_data=CONCAT( SUBSTRING( campo_varchar, 7, 4 ) , "-", SUBSTRING( campo_varchar, 4, 2 ) , "-", SUBSTRING( campo_varchar, 1, 2 ) )
FROM tabella

Però fatto questo, modifica la query di inserimento facendo inserire il record nel campo corretto ( campo_data ) e non più in quello varchar...

ciao

Lore

risposto 9 anni fa
Lore
Lore
1
modificato 9 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda