2012-04-30 8 views
14

Tengo que almacenar en mi base de datos mysql, el cumpleaños de los usuarios (como 12-11-1990).¿Cuál es el mejor campo para guardar el cumpleaños?

¿Qué tipo de campo debo usar para almacenarlo?

+3

te refieres a qué tipo de campo 'date' – mgraph

+0

FECHA lo haría :) –

+1

personalmente me encantan las marcas de tiempo, pero probablemente deberías ir con la respuesta de oezi, MYSQL DATE es la forma oficial de hacerlo. –

Respuesta

16

para almacenar una fecha, probablemente debería use a date. para citar la documentación:

El tipo DATE se utiliza para valores con una parte de fecha pero sin parte de tiempo.

0

es DATE demasiado obvio?

+8

No hay necesidad de ser desagradable ... (NO he votado negativamente ...) –

+1

Curioso cómo las personas interpretaron esto. De hecho, lo leí como "¿no es el DATE que buscas porque parece obvio?". Es decir, @Jason puede haber tenido dudas sobre su respuesta. Consecuentemente +1 para que le dé beneficio de la duda. –

3

"FECHA" debería ser bueno.

El tipo DATE se utiliza para valores con una parte de fecha pero ninguna parte de tiempo. MySQL recupera y muestra los valores de FECHA en formato 'AAAA-MM-DD'. El rango compatible con es '1000-01-01' a '9999-12-31'.

Más detalles: http://dev.mysql.com/doc/refman/5.5/en/datetime.html

3

debe almacenar la fecha a partir de la fecha.

Y la configuración regional como varchar (PHP o).

No se olvide de la configuración regional :)

hay nada como llegar un correo electrónico de algo así como Weibo (Twitter chino) cuando no es tu cumpleaños aún.

10

Puede almacenarlo como un objeto DATE como lo haría normalmente con fechas no repetitivas. El, si estás usando MySQL (creo que otros DBMS también tienen funciones de este) se puede recuperar cumpleaños utilizando funciones de MySQL como se describe here:

SELECT * 
FROM table_name 
WHERE 
    MONTH(date_field) = desired_month AND 
    DAY(date_field) = desired_day 

Este método puede ser un poco lento cuando se trata de miles de registros . Si ese es tu caso, puedes almacenar el cumpleaños con 3 INT por separado, una para cada una (año, mes, día). A continuación, se busca cumpleaños así:

SELECT * 
FROM table_name 
WHERE 
    month_field = desired_month AND 
    day_field = desired_day 

Si se utiliza este último método, te aconsejo que para almacenar también una versión DATETIME del cumpleaños, así que se puede construir la fecha sin ningún tipo de maniobras. También puede indexar cada uno de los 3 campos (no únicos) por lo que es más rápido recuperarlos.

+2

Incluya el 29 de febrero los cumpleaños el 1 de marzo para los años no bisiestos. –

Cuestiones relacionadas