Discussion:
Pregunta sobre el tipo de Dato Money
(demasiado antiguo para responder)
RP
2008-05-19 20:49:00 UTC
Permalink
Hola que tal, vengo desarrollando una aplicación en Visual Basic 6.0 con SQL
Server 2005, lo que pasa es lo siguiente, yo antes desarrollaba guardando los
datos del tipo moneda como float, y ahora a sugerencia de un foro, lo que es
moneda (Soles peruanos) los almaceno como tipo de dato money, pero acá va el
detalle, yo sólo quiero que me guarde con 2 decimales, sim embargo a la hora
de almacenar me lo guarda de esta forma, por ej: 35.4100 Lo que yo quiero
es que sólo me guarde con 2 decimales, como hago eso??, no me digan dentro de
la aplicación xq ya esta para guardar con 2 decimales, pero nada, asi que veo
que es para cambiarlo en el SQL, pero como hacereso??
Maxi
2008-05-19 20:58:39 UTC
Permalink
Hola, este ejemplo guarda con 2 decimales

USE tempdb;

GO

CREATE TABLE TestMoney (cola INT PRIMARY KEY, colb MONEY);

GO

SET NOCOUNT ON;

GO

-- The following three INSERT statements work.

INSERT INTO TestMoney VALUES (1, $123.45);

GO

INSERT INTO TestMoney VALUES (2, $123123.45);

GO

INSERT INTO TestMoney VALUES (3, CAST('$444,123.45' AS MONEY) );

GO
--
Salu2

-----------------------------------------
Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com
------------------------------------------
Post by RP
Hola que tal, vengo desarrollando una aplicación en Visual Basic 6.0 con SQL
Server 2005, lo que pasa es lo siguiente, yo antes desarrollaba guardando los
datos del tipo moneda como float, y ahora a sugerencia de un foro, lo que es
moneda (Soles peruanos) los almaceno como tipo de dato money, pero acá va el
detalle, yo sólo quiero que me guarde con 2 decimales, sim embargo a la hora
de almacenar me lo guarda de esta forma, por ej: 35.4100 Lo que yo quiero
es que sólo me guarde con 2 decimales, como hago eso??, no me digan dentro de
la aplicación xq ya esta para guardar con 2 decimales, pero nada, asi que veo
que es para cambiarlo en el SQL, pero como hacereso??
Alejandro Mesa
2008-05-19 22:51:02 UTC
Permalink
RP,

Puedes usar el tipo de dato NUMERIC o DECIMAL, en el cual puedes especificar
los decimales.


AMB
Post by RP
Hola que tal, vengo desarrollando una aplicación en Visual Basic 6.0 con SQL
Server 2005, lo que pasa es lo siguiente, yo antes desarrollaba guardando los
datos del tipo moneda como float, y ahora a sugerencia de un foro, lo que es
moneda (Soles peruanos) los almaceno como tipo de dato money, pero acá va el
detalle, yo sólo quiero que me guarde con 2 decimales, sim embargo a la hora
de almacenar me lo guarda de esta forma, por ej: 35.4100 Lo que yo quiero
es que sólo me guarde con 2 decimales, como hago eso??, no me digan dentro de
la aplicación xq ya esta para guardar con 2 decimales, pero nada, asi que veo
que es para cambiarlo en el SQL, pero como hacereso??
Penta
2008-05-19 23:28:18 UTC
Permalink
Maxi.
Sin saber nada aun de SS2005. Por que existe el tipo de datos MONEY ??

Al igual que Alejandro Mesa, a mi me basta con Numeric o Decimal

Ps. Por la noche buscare en San Google de todas maneras.

Atte.
Penta.
Maxi Accotto
2008-05-20 00:59:39 UTC
Permalink
Mira, yo ni lo uso, siempre uso decimal pero eso no quiere decir que no haya
que usarlo :-)
--
-----------------------------
Microsoft MVP SQLServer
www.sqltotalconsulting.com
-------------------------------
Post by Penta
Maxi.
Sin saber nada aun de SS2005. Por que existe el tipo de datos MONEY ??
Al igual que Alejandro Mesa, a mi me basta con Numeric o Decimal
Ps. Por la noche buscare en San Google de todas maneras.
Atte.
Penta.
Gux (MVP)
2008-05-20 14:58:03 UTC
Permalink
Deje que SQL server almacene tranquilamente los datos de tipo Money con 4
digitos decimales y formatee los valores en la capa de presentación tal cómo
desee usted visualizar los valores.

Los tipos de datos money y smallmoney están limitados a cuatro espacios
decimales. Use el tipo de datos decimal si se necesitan más espacios
decimales.
--
Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gustavo.larriera
--
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
Post by RP
Hola que tal, vengo desarrollando una aplicación en Visual Basic 6.0 con SQL
Server 2005, lo que pasa es lo siguiente, yo antes desarrollaba guardando los
datos del tipo moneda como float, y ahora a sugerencia de un foro, lo que es
moneda (Soles peruanos) los almaceno como tipo de dato money, pero acá va el
detalle, yo sólo quiero que me guarde con 2 decimales, sim embargo a la hora
de almacenar me lo guarda de esta forma, por ej: 35.4100 Lo que yo quiero
es que sólo me guarde con 2 decimales, como hago eso??, no me digan dentro de
la aplicación xq ya esta para guardar con 2 decimales, pero nada, asi que veo
que es para cambiarlo en el SQL, pero como hacereso??
RP
2008-05-20 15:53:02 UTC
Permalink
Bueno eso es lo que hago, en la capa de presentación me muestra normal con
dos decimales, sin problemas, y tb esta restringido el ingreso a solo dos
decimales, pero a la hora de hacer mis reportes, no me generarar problemas??,
teniendo en cuenta que solo necesito el valor con 2 decimales...
Post by Gux (MVP)
Deje que SQL server almacene tranquilamente los datos de tipo Money con 4
digitos decimales y formatee los valores en la capa de presentación tal cómo
desee usted visualizar los valores.
Los tipos de datos money y smallmoney están limitados a cuatro espacios
decimales. Use el tipo de datos decimal si se necesitan más espacios
decimales.
--
Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gustavo.larriera
--
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
Post by RP
Hola que tal, vengo desarrollando una aplicación en Visual Basic 6.0 con SQL
Server 2005, lo que pasa es lo siguiente, yo antes desarrollaba guardando los
datos del tipo moneda como float, y ahora a sugerencia de un foro, lo que es
moneda (Soles peruanos) los almaceno como tipo de dato money, pero acá va el
detalle, yo sólo quiero que me guarde con 2 decimales, sim embargo a la hora
de almacenar me lo guarda de esta forma, por ej: 35.4100 Lo que yo quiero
es que sólo me guarde con 2 decimales, como hago eso??, no me digan dentro de
la aplicación xq ya esta para guardar con 2 decimales, pero nada, asi que veo
que es para cambiarlo en el SQL, pero como hacereso??
Jhonny Vargas P.
2008-05-20 16:00:22 UTC
Permalink
Perdón que me meta....

Pero opino igual que "don" Gustavo ... mejor dejar que SQL Server almacene
los valores tranquilamente tipo money con 4 decimales...
Cuando quieras "mostrar" o sacar información con un SELECT puedes
formatearlo a 2 decimales... o en tu misma capa de presentación.
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
Post by RP
Bueno eso es lo que hago, en la capa de presentación me muestra normal con
dos decimales, sin problemas, y tb esta restringido el ingreso a solo dos
decimales, pero a la hora de hacer mis reportes, no me generarar problemas??,
teniendo en cuenta que solo necesito el valor con 2 decimales...
Post by Gux (MVP)
Deje que SQL server almacene tranquilamente los datos de tipo Money con 4
digitos decimales y formatee los valores en la capa de presentación tal cómo
desee usted visualizar los valores.
Los tipos de datos money y smallmoney están limitados a cuatro espacios
decimales. Use el tipo de datos decimal si se necesitan más espacios
decimales.
--
Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gustavo.larriera
--
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
Post by RP
Hola que tal, vengo desarrollando una aplicación en Visual Basic 6.0 con SQL
Server 2005, lo que pasa es lo siguiente, yo antes desarrollaba guardando los
datos del tipo moneda como float, y ahora a sugerencia de un foro, lo que es
moneda (Soles peruanos) los almaceno como tipo de dato money, pero acá va el
detalle, yo sólo quiero que me guarde con 2 decimales, sim embargo a la hora
de almacenar me lo guarda de esta forma, por ej: 35.4100 Lo que yo quiero
es que sólo me guarde con 2 decimales, como hago eso??, no me digan dentro de
la aplicación xq ya esta para guardar con 2 decimales, pero nada, asi que veo
que es para cambiarlo en el SQL, pero como hacereso??
Salvador Ramos
2008-05-20 18:58:36 UTC
Permalink
Personalmente no suelo usarlo.

Además he sufrido en ciertas aplicaciones problemas derivados de almacenar
más decimales de los que realmente se necesitan, sobre todo con el tema de
importes, en cuyo caso no recomiendo almacenar más decimales de los que
exige la divisa que se use (habitualmente dos decimales).

Me he encontrado casos de descuadres, que por supuesto no achaco
concretamente al uso de los 4 decimales, sino a este uso unido a pequeños
errores a la hora de hacer redondeos para almacenar los datos y otros
pequeños fallos de programación.
--
Un saludo
Salvador Ramos
Solid Quality Mentors (http://www.solidq.com)
---------------------------------------------------
www.helpdna.net (información sobre SQL Server y Microsoft .Net)
Visita mi nuevo blog: www.sqlserversi.com
---------------------------------------------------
Post by Jhonny Vargas P.
Perdón que me meta....
Pero opino igual que "don" Gustavo ... mejor dejar que SQL Server almacene
los valores tranquilamente tipo money con 4 decimales...
Cuando quieras "mostrar" o sacar información con un SELECT puedes
formatearlo a 2 decimales... o en tu misma capa de presentación.
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
Post by RP
Bueno eso es lo que hago, en la capa de presentación me muestra normal con
dos decimales, sin problemas, y tb esta restringido el ingreso a solo dos
decimales, pero a la hora de hacer mis reportes, no me generarar problemas??,
teniendo en cuenta que solo necesito el valor con 2 decimales...
Post by Gux (MVP)
Deje que SQL server almacene tranquilamente los datos de tipo Money con 4
digitos decimales y formatee los valores en la capa de presentación tal cómo
desee usted visualizar los valores.
Los tipos de datos money y smallmoney están limitados a cuatro espacios
decimales. Use el tipo de datos decimal si se necesitan más espacios
decimales.
--
Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gustavo.larriera
--
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
Post by RP
Hola que tal, vengo desarrollando una aplicación en Visual Basic 6.0 con SQL
Server 2005, lo que pasa es lo siguiente, yo antes desarrollaba guardando los
datos del tipo moneda como float, y ahora a sugerencia de un foro, lo que es
moneda (Soles peruanos) los almaceno como tipo de dato money, pero acá va el
detalle, yo sólo quiero que me guarde con 2 decimales, sim embargo a la hora
de almacenar me lo guarda de esta forma, por ej: 35.4100 Lo que yo quiero
es que sólo me guarde con 2 decimales, como hago eso??, no me digan dentro de
la aplicación xq ya esta para guardar con 2 decimales, pero nada, asi que veo
que es para cambiarlo en el SQL, pero como hacereso??
Alfredo Novoa
2008-05-20 23:03:53 UTC
Permalink
Hola Salvador,
Post by Salvador Ramos
Personalmente no suelo usarlo.
Además he sufrido en ciertas aplicaciones problemas derivados de almacenar
más decimales de los que realmente se necesitan, sobre todo con el tema de
importes, en cuyo caso no recomiendo almacenar más decimales de los que
exige la divisa que se use (habitualmente dos decimales).
Yo estoy de acuerdo en que si solo necesitas dos decimales es mejor usar un
tipo con solo dos decimales. Como mínimo te ahorras el trabajo del
formateo.


Saludos
Alfredo
Jhonny Vargas P.
2008-05-21 14:35:12 UTC
Permalink
Post by Alfredo Novoa
Hola Salvador,
Post by Salvador Ramos
Personalmente no suelo usarlo.
Además he sufrido en ciertas aplicaciones problemas derivados de almacenar
más decimales de los que realmente se necesitan, sobre todo con el tema de
importes, en cuyo caso no recomiendo almacenar más decimales de los que
exige la divisa que se use (habitualmente dos decimales).
Yo estoy de acuerdo en que si solo necesitas dos decimales es mejor usar un
tipo con solo dos decimales. Como mínimo te ahorras el trabajo del
formateo.
Que tal Alfredo,

Es como el datetime... almacenas lo que necesitas en la fecha, si quieres
usar las horas minutos y segundo... es cosa tuya, en tus aplicaciones sabes
que debes formatear... algo similar para con el money (para mi gusto) puedes
almacenar un valor con 2 decimales perfectamente... también puedes usar
decimal... un varchar jejeje.. en realidad hay muchas formas unas más
optimas que otras...

de todas maneras el tema del problema de descuadres y sumatorias es un dolor
de cabeza enorme cuando pasas de varios decimales a un valor entero...


Saludos,
Jhonny Vargas P.

Loading...