2010-12-16 27 views
9

Estoy trabajando en un sitio de la iglesia que tiene muchos eventos antes del 1970, estos eventos comienzan desde 1001 hasta hoy, ¿cómo puedo almacenar las fechas en MySQL?MySQL: Trabajando con fechas anteriores a 1970

$y = $_REQUEST["year"]; 
$m = $_REQUEST["month"]; 
$d = $_REQUEST["day"]; 

$date = date("Y-m-d", "$y/$m/$d"); 

Esto funciona bien sólo para fechas posteriores 1970, ¿cómo puedo almacenar fechas antes de este año?

¿Qué tipo de datos debo tener en MySQL? Ahora que configuro mi columna como date escriba

Respuesta

20

DATE está bien. Puede almacenar valores from 1000 to 9999 AD.

El tipo DATE se utiliza cuando solo necesita un valor de fecha, sin una parte de tiempo. MySQL recupera y muestra los valores de FECHA en formato 'AAAA-MM-DD'. El rango admitido es '1000-01-01' a '9999-12-31'.

Es diferente con funciones de PHP de estilo antiguo de fecha (date(), strtotime() ....) Estos funcionan con marcas de tiempo UNIX y, al utilizar valores de 32 bits, se limitan a un intervalo de fechas de 1970 a 2038.

Para trabajar con valores de fecha más allá de eso, trabaje con PHP 5's new object-oriented DateTime class.

+0

@webbiedave cheers! –

+13

¿No hay fechas anteriores al año 1000? Digamos que quieres guardar tu cumpleaños. ¿Qué haría Jesús? –

+2

@Wouter ¡eh! :) @ajreal tenía la solución para eso en su respuesta (ahora eliminada), almacenar el año como un int. firmado por separado. No creo que 'DATE' pueda hacer eso –

Cuestiones relacionadas