13
2010
MySQL: query di confronto date su campi varchar
Questo articolo è stato pubblicato 1 anno 11 mesi 1 giorno giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi. Questo sito non è responsabile per eventuali errori causati da questo problema.Se per qualche ragione avete un database MySQL in cui ci sono dei campi data il cui formato non è “date” ma testo normale (ad es. “varchar”, “char”, ecc.) e volete comunque effettuare delle query di ricerca filtrando per data, potete combinare due funzioni di MySQL che fanno proprio al caso vostro.
Le funzioni sono:
- DATE_FORMAT che formatta una data in una sintassi da voi stabilita;
- STR_TO_DATE che converte una stringa in una data in formato MySQL (YYYY-mm-dd).
Vediamo un esempio:
supponiamo di avere un campo che si chiama “data_nascita” che è un varchar e contiene la data in formato dd/mm/YYYY, ecco come effettuare la query:
SELECT data_nascita,DATE_FORMAT(STR_TO_DATE(data_nascita,'%d/%m/%Y'),'%Y-%m-%d') FROM utenti
In questo modo otterremo due colonne, una con la data in formato originale e l’altra con la data in formato MySQL.
Se ad esempio vogliamo cercare tutte le persone nate prima del 2000 potremmo scrivere qualcosa del genere:
SELECT * FROM utenti WHERE DATE_FORMAT(STR_TO_DATE(data_nascita,'%d/%m/%Y'),'%Y-%m-%d') < '2000-01-01'
In ogni caso ricordate che è buona norma avere i campi data in formato "date". Questo velocizzerà le query di ricerca. Se possibile convertite gli eventuali campi varchar in campi date.

An article by





