2010-03-13 17 views
7

tengo tres columnas, y, m, y d (año, mes y día) y desea almacenar esto como una fecha.MySQL: ¿Cómo puedo configurar una fecha (? Makedate) con mes, día y año

Qué función debería utilizar en MySQL para hacer esto?

Al parecer makedate usa año y día del año (véase más adelante), pero tengo meses.

Sé que puedo usar STR_TO_DATE (str, formato), construyendo la cadena desde (y, m, d), pero supongo que hay una manera más fácil de hacerlo.

Referencias

MAKEDATE(year,dayofyear)

devuelve una fecha, año determinado y los valores días de año. dayofyear debe ser mayor que 0 o el resultado es NULL.

Respuesta

8

Creo que se puede utilizar una cadena en el formato adecuado:

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

Editar: Sí se puede, simplemente verifica que en MySQL 5.1.

5

No es una prioridad en la legibilidad, pero el siguiente funcionaría:

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

No estoy seguro de que esto más eficiente que el uso CONCAT y STR_TO_DATE.

1

espero que esto funciona Wil ..

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

Dónde a.dob es el nombre de mi columna que tiene FECHA

Cuestiones relacionadas