Quiero almacenar muchos registros en una base de datos MySQL. Todos ellos contienen valores monetarios. Pero no sé cuántos dígitos se insertará para cada uno.
¿Qué tipo de datos tengo que utilizar para este fin?
VARCHAR o INT (u otros tipos de datos numéricos)?
Dado que el dinero necesita una representación exacta, no utilice tipos de datos que sólo sean aproximados como float
. Puede utilizar un tipo de dato numérico de punto fijo como
decimal(15,2)
2
es el número de dígitos después del punto decimalEstos tipos se utilizan cuando es importante preservar la precisión exacta, por ejemplo con datos monetarios.
Puede utilizar DECIMAL
o NUMERIC
ambos son iguales
Los tipos DECIMAL y NUMERIC almacenan valores numéricos exactos. Estos tipos se utilizan cuando es importante preservar la precisión exacta, por ejemplo con datos monetarios. En MySQL, NUMERIC se implementa como DECIMAL, por lo que los siguientes comentarios sobre DECIMAL se aplican igualmente a NUMERIC : MySQL
i.e. DECIMAL(10,2)
Depende de sus necesidades.
Usar DECIMAL(10,2)
suele ser suficiente pero si necesitas valores un poco más precisos puedes poner DECIMAL(10,4)
.
Si trabajas con valores grandes sustituye 10
por 19
.