Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Tipo de dato Moneda en Mysql ???

Estas en el tema de Tipo de dato Moneda en Mysql ??? en el foro de Mysql en Foros del Web. Que tal Masters, Una duda puntual, He venido trabajando con una BD Acces, en donde algunos datos que son cifras, se definen como un tipo ...
  #1 (permalink)  
Antiguo 11/11/2005, 13:42
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Tipo de dato Moneda en Mysql ???

Que tal Masters,

Una duda puntual,

He venido trabajando con una BD Acces, en donde algunos datos que son cifras, se definen como un tipo de dato Moneda y bueno, se guarda por ejemplo:

$ 14.250,00

Y estos campos se suman restan, etc y guardan 3 decimales luego de la coma.

En Mysql veo que no existe el tipo de campo Modeda (Currency).........entonces........que me recomendáis para seguir operando los datos de la misma forma como lo hago en Access?

Tengo Mysql 4.1.9

Saludos y Graicas de Antemano.
  #2 (permalink)  
Antiguo 11/11/2005, 14:04
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
MySQL no maneja currency en estos momentos. Para tal fin, podes utilizar el tipo de dato Decimal, especificando la cantidad de enteros y decimales.

Ver información completa en Migrating from Microsoft SQL Server and Access to MySQL

Si podes leelo todo y si queres algo más puntual, busca el párrafo que dice Data Types
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 11/11/2005, 14:18
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
Pues no existe un equivalente certero de Currency a Mysql asi que te recomendaria cambiarlo por DECIMAL(19,4) abrriba:
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #4 (permalink)  
Antiguo 11/11/2005, 14:18
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
Cita:
Iniciado por BrujoNic
MySQL no maneja currency en estos momentos. Para tal fin, podes utilizar el tipo de dato Decimal, especificando la cantidad de enteros y decimales.

Ver información completa en Migrating from Microsoft SQL Server and Access to MySQL

Si podes leelo todo y si queres algo más puntual, busca el párrafo que dice Data Types
te me adelantaste
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #5 (permalink)  
Antiguo 11/11/2005, 14:21
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Así está Bien ??? (Uso DB Designer 4)




Código PHP:
CREATE TABLE Tabla_de_Precios (
  
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  
cifra DECIMAL(19,4NULL,
  
PRIMARY KEY(id)
)
TYPE=InnoDB
  #6 (permalink)  
Antiguo 11/11/2005, 14:28
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
Efectivamente... aunque en esa tabla no la estas vinculando con ninguna ya que no le veo una Foreign Key.

Nota: A menos que esta tabla sea maestra de alguna otra
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #7 (permalink)  
Antiguo 11/11/2005, 14:37
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Que tal Listerns, sí solo acabé de crear esta tabla para probar, tengo otro par de precisiones:

Inserto valores sin decimales como:
Código PHP:
INSERT INTO tabla_de_precios (cifraVALUES (20000); 
Para que tome los decimales, separo con un punto

Código PHP:
INSERT INTO tabla_de_precios (cifraVALUES (20000.16); 
Veo que no sirve la coma ; Porque obviamente es un caracter especial.

Código PHP:
SELECT SUM(cifrafrom tabla_de_precios 
Y me sale la Suma correctamente:

Código PHP:
40000,16 
Preguntas:

1. Como la entrada de decimales es vía un formulario (uso php + mysql), he de controlar con un javascript que ponga el formato con punto en los decimales....Correcto?

2. El formato de salida con:

Código PHP:
SELECT SUM(cifrafrom tabla_de_precios 
Es con una coma:
Código PHP:
40000,16 
Se le puede dar un formato de salida (Algo en el select como las fechas), para que se vean los Miles tambien?

Sería

Código PHP:
40.000,16 

Gracias, esto sería lo ultimo que necesito saber.

Saludos a todos.
  #8 (permalink)  
Antiguo 11/11/2005, 14:53
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
1- Correcto

2- Es manejado a traves del PHP y no de la BBDD
http://www.igelectronica.com/desarro...rticle&sid=614
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #9 (permalink)  
Antiguo 11/11/2005, 15:39
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Je, je, muy efectivo como siempre master..........solo una última ayuda si la tienes..................conoces algún javascript que controle lo del punto en el formulario ???

Gracias.
  #10 (permalink)  
Antiguo 11/11/2005, 17:01
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
Quiza te funciene este

http://www.htmlweb.net/manual/formul...jemplo_18.html

mira el codigo
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #11 (permalink)  
Antiguo 10/07/2008, 03:34
 
Fecha de Ingreso: enero-2008
Mensajes: 8
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tipo de dato Moneda en Mysql ???

No necesitas ningún javascript para transformar la coma en un punto en el INSERT, simplemente introduce el valor entre comillas.

Ejemplo:

En lugar de poner
Código PHP:
INSERT INTO tabla_de_precios (cifraVALUES (20000,16); // Esto da error pq MySQL piensa que hay dos valores 20000 y 16 
pon:
Código PHP:
INSERT INTO tabla_de_precios (cifraVALUES ('20000,16'); // Esto NO da error pq MySQL interpreta que sólo hay un valor 20000,16 
Saludos
  #12 (permalink)  
Antiguo 10/07/2008, 04:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Tipo de dato Moneda en Mysql ???

MySQL maneja por default el punto como separador de decimales. El problema de administrarlo en las aplicaciones es de regionalización de la PC que se está usando.
En todo caso deberías revisar cómo se puede determinar qué separadores de decimales, grupos y listas está usando la PC en que se ejecuta la aplicación y hacer las conversiones con alguna función específica.
Si fuerzas a poner un string como '20000,16' (como dice TomasCrespo) puedes llegar a obtener un error de "Data truncated". Es mejor administrar el formato de número antes de generar el envío a base.
Si lo estuvieses haciendo en .Net podría recomendarte, pero en PHP hace tiempo que no estudio el tema.

Te sugiero que consultes en el foro de PHP, allá posiblemente alguien sepa cómo hacerlo bien.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 10/07/2008, 05:35
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Tipo de dato Moneda en Mysql ???

No se permite revivir temas viejos y estas reviviendo uno del 2005. ¿Crees que a estas alturas, tendrá el mismo problema?

Cerrado.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 14:20.