[+/-]
      Los tipos de fecha y hora para representar valores temporales son
      DATETIME, DATE,
      TIMESTAMP, TIME, y
      YEAR. Cada tipo temporal tiene un rango de
      valores legales, así como un valor “zero” que se usa
      cuando se especifica un valor ilegal que MySQL no puede
      representar. El tipo TIMESTAMP tiene un
      comportamiento automático especial, descrito posteriormente.
    
      Desde MySQL 5.0.2, MySQL da advertencias/errores si trata de
      insertar una fecha ilegal. Puede hacer que MySQL acepte ciertas
      fechas, tales como '1999-11-31', usando el modo
      SQL ALLOW_INVALID_DATES . (Antes de 5.0.2, este
      modo era el comportamiento por defecto de MySQL). Esto es útil
      cuando quiere almacenar el valor “posiblemente
      erróneo” que el usuario especifica (por ejemplo, en un
      formulario web) en la base de datos para un posterior
      procesamiento. En este modo, MySQL sólo verifica que el mes esté
      en el rango de 0 a 12 y que el día esté en el rango de 0 a 31.
      Estos rangos incluyen cero ya que MySQL permite almacenar fechas
      cuando el día o el mes son cero en columnas
      DATE o DATETIME . Esto es
      muy útil para aplicaciones que necesiten almacenar una fecha de
      nacimiento para la que no sepa la fecha exacta. En este caso,
      simplemente almacena la fecha como '1999-00-00'
      o '1999-01-00'. Si almacena valores similares a
      estos, no debe esperar obtener resultados correctos para funciones
      tales como DATE_SUB() or
      DATE_ADD que necesitan fechas completas. (Si no
      quiere permitir ceros en las fechas, puede usar el modo SQL
      NO_ZERO_IN_DATE ).
    
      MySQL permite almacenar '0000-00-00' como
      “fecha de pruebas” (si no está usando el modo SQL
      NO_ZERO_DATE ). Esto es mejor que usar (y usa
      menos espacio de datos e índice) que usar valores
      NULL .
    
      Modificando la variable de sistema sql_mode al
      modo apropiado, puede especificar exactamente qué tipos de datos
      quiere soportar con MySQL. Consulte
      Sección 5.3.2, “El modo SQL del servidor”.
    
Aquí hay algunas consideraciones generales a tener en cuenta cuando se trabaja con tipos de fecha y hora:
MySQL muestra los valores para una fecha o hora en un formato de salida estándar, pero trata de intepretar una variedad de formatos para los valores de entrada que se proporcionan (por ejemplo, cuando especifica un valor para asignar o comparar con un tipo fecha o hora). Sólo los formatos descritos en las siguientes secciones son soportados. Se espera la entrada de valores legales. Si se usan otros formatos pueden ocurrir resultados imprevisibles.
Las fechas con años de dos dígitos son ambituas, ya que no se sabe el siglo. MySQL interpreta los años de dos dígitos usando las siguientes reglas:
              Los años del rango 70-99 se convierten
              en 1970-1999.
            
              Los años del rango 00-69 se convierten
              en 2000-2069.
            
          Aunque MySQL trata de interpretar los valores con varios
          formatos, las fechas siempre deben darse en el orden
          año-mes-día (por ejemplo, '98-09-04'), en
          lugar del formato mes-día-año o día-mes-año usados
          comunmente (por ejemplo, '09-04-98',
          '04-09-98').
        
MySQL convierte automáticamente una fecha o hora a un número si el valor se usa en un contexto numérico y viceversa.
          Cuando MySQL encuentra un valor para fecha o hora que está
          fuera de rango o es ilegal para el tipo (como se describe al
          inicio de la sección), lo convierte al valor
          “cero” para ese tipo. La excepción es que los
          valores fuera de rango del tipo TIME se
          reemplazan por el valor límite de rango apropiado para el
          tipo TIME .
        
          La siguiente tabla muestra el formato del valor
          “cero” para cada tipo. Tenga en cuenta que el uso
          de estos valores produce mensajes de advertencia si el modo
          SQL NO_ZERO_DATE está activado.
        
| Tipo de Columna | “Cero” Valor | 
| DATETIME | '0000-00-00 00:00:00' | 
| DATE | '0000-00-00' | 
| TIMESTAMP | 00000000000000 | 
| TIME | '00:00:00' | 
| YEAR | 0000 | 
          Los valores “cero” son especiales, pero puede
          almacenarlos o referirse a ellos explícitamente usando los
          valores mostrados en la tabla. También puede hacerlo usando
          los valores '0' o 0, que
          son más sencillos de escribir.
        
          Los valores de fecha o hora “cero” usados a
          través de MyODBC se convierten automáticamente a
          NULL en MyODBC 2.50.12 y posterior, ya que
          ODBC no puede tratar estos valores.
        
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

