mercoledì 31 agosto 2011

Formattare date con MySql



In MySql le date hanno questo formato: AAAA-MM-GG, mentre i datetime AAAA-MM-GG OO:MM:SS (i millisecondi non sono ancora gestiti, nemmeno dal campo timestamp)

Sono due le funzioni per giocare con le date in MySql:

  • DATE_FORMAT che serve per formattare la data dal formato di MySql a quello che vogliamo noi;
  • STR_TO_DATE che serve ad eseguire l’operazione contraria, ossia data la nostra stringa con la data rappresentata secondo le nostre esigenze la converte nel formato che piace a MySql.


DATE_FORMAT (data da formattare,pattern)

La funzione prense in input la data o il timestamp in formato MySql e restituisce un varchar con la formattazione desiderata esplicitata nel pattern.
Il pattern è una stringa con caratteri speciali preceduti dal %.

Vediamo la lista completa di questi caratteri speciali, presa dalla documentazione ufficiale di MySql:

           
CARATTERE
DESCRIZIONE
%a
Giorno della settimana abbreviato (Sun..Sat)
%b
Giorno del mese abbreviato (Jan..Dec)

%c
Mese numerico (0..12)
%D
Giorno del mese con suffisso inglese (0th, 1st, 2nd, 3rd, …)

%d
Giorno del mese numerico (00..31)
%e
Giorno del mese numerico (0…31)
%f
Microsecondo (000000..999999)
%H
Ora (00,…23)
%h
Ora (01,….12)
%I
Ora (01,….12)
%i
Minuti (00,..59)
%j
Giorno dell’anno (00,…366)
%k
Ora (00,….23)

%l
Ora (1,…12)
%M
Nome del mese (January..December)
%m
Nome del mese (00,..12)
%p
AM o PM
%r
Hh:mm:ss seguito da AM o PM
%S
Secondi (00,..59)
%s
Secondi (00,..59)
%T
Orario (hh:mm:ss con le 24 ore)
%U
Settimana (00..53) dove Domenica è il primo giorno della settimana
%u
Settimana (00..53) dove Lunedì è il primo giorno della settimana
%V
Settimana (01..53) dove Domenica è il primo giorno della settimana, è usato assieme alla %X
%v
Settimana (01..53) dove Domenica è il primo giorno della settimana, è usato assieme alla %x
%W
Giorno della settimana (Sunday…Saturday)
%w
Giorno della settimana (0= Sunday,….6=Saturday)
%X
Anno per la settimana dove Domenica è il primo giorno  della settimana, numerico, 4 cifre usato con %V
%x
Anno per la settimana dove Domenica è il primo giorno  della settimana, numerico, 4 cifre usato con %v
%Y
Anno, numerico, 4 cifre
%y
Anno, numerico 2 cifre



Esempi:

select DATE_FORMAT(current_timestamp,'%d-%m-%Y %h:%i:%s') as 'data formattata';

Produce '31-08-2011 12:13:07'

select DATE_FORMAT(current_timestamp,'%d-%m-%Y %r') as 'data formattata';

Produce '31-08-2011 12:14:21 PM'


STR_TO_DATE (stringa_da_formattare,pattern)
  
Questa funzione torna una data in formato mysql data la nostra stringa e specificato il pattern di decifrazione della stessa.
Le regole per il pattern fanno riferimento alla tabella prima descritta.

Esempi:

select STR_TO_DATE('31/08/2011','%d/%m/%Y');

Produce '2011-08-31'


select STR_TO_DATE('31/08/2011 Ora:12 Minuto:23 Secondo:50 PM','%d/%m/%Y Ora:%h Minuto:%i Secondo:%s %p');

Produce: '2011-08-31 12:23:50'

Nessun commento:

Posta un commento