2010-11-08 16 views

Respuesta

33

es el tipo de números enteros como:

int(11) 

es bueno para la indexación y condiciones como > < =

+14

Si usa INT, debe recordar que la versión firmada va solo de -2147483648 a 2147483647, el límite superior desencadena el [error del año 2038] (http://en.wikipedia.org/wiki/Year_2038_problem). Podría usar INT (11) UNSIGNED o BIGINT - hay [algunas advertencias] (http://dev.mysql.com/doc/refman/5.6/en/numeric-type-overview.html) con este último pero es [ masivo] (http://en.wikipedia.org/wiki/Integer_ (computer_science)). Personalmente, me siento más seguro con las funciones incorporadas de MySQL, pero las funciones de indexación y comparación para grandes conjuntos de datos pueden influir en ti. –

+0

Para la posteridad I +1 Comentario de William Turrell. UNSIGNED INT sería el camino a seguir desde mi perspectiva, pero la respuesta más verdadera dependerá del idioma en el que esté extrayendo la información de la base de datos (si está codificando desde cero). Ejemplo: si se trata de una tienda Java, los mapas INT no identificados se asignan a java.lang.Long (consulte la tabla 5.2 aquí para usuarios de MySQL + Java: https://dev.mysql.com/doc/connector-j/en/connector-j -reference-type-converssions.html). De esta forma, ahorras algo de espacio en el DB mientras te aseguras que no escribes código que golpeará un error en 2038. Gran punto @WilliamTurrell. –

+0

En términos del error 2038, ¿no sería una medida razonable aumentar 11 en 'int (11)' a 12 o 13 para evitar la situación? –

10

usted quiera utilizar el TIMESTAMP data type.
Se almacena como un valor de época, pero MySQL muestra el valor como 'AAAA-MM-DD HH: MM: SS'.

Cuestiones relacionadas