2010-03-13 15 views
7

Ho tre colonne, y, m e d (anno, mese e giorno) e voglio memorizzarla come una data.MYSQL: Come posso impostare una data (makedate?) Con mese, giorno e anno

Quale funzione dovrei utilizzare su mySQL per eseguire questa operazione?

Apparentemente makedate utilizza anno e giorno dell'anno (vedi sotto), ma ho il mese.

So che posso usare STR_TO_DATE (str, format), costruendo la stringa da (y, m, d), ma suppongo che ci sia un modo più semplice per farlo.

RIFERIMENTI

MAKEDATE(year,dayofyear)

restituisce una data, dato anno e valori giorno d'anno. dayofyear deve essere maggiore di 0 oppure il risultato è NULL.

risposta

8

credo che si può utilizzare una stringa nel formato corretto:

UPDATE table SET my_date = '2009-12-31'; 

Edit: Sì è possibile, basta verificato in MySQL 5.1.

5

non è alto sulla leggibilità, ma il seguente dovrebbe funzionare:

SELECT'1900-01-01' + INTERVAL y-1900 YEAR + INTERVAL m-1 MONTH + INTERVAL d-1 
DAY FROM ... 

Non sono sicuro che questo non più efficiente rispetto all'utilizzo di CONCAT e STR_TO_DATE.

1

Spero che questo wil funzionato ..

str_to_date(concat(year(curdate()) , '-', month(a.dob) , '-', day(a.dob)) , '%Y-%m-%d') 

Dove a.dob è il nome di mia colonna che ha DATA

Problemi correlati