Skip to Content.
Sympa Menu

freetds - Re: [freetds] MONEY type support??

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "Sokol, Ryan - 244" <ryans AT HA.com>
  • To: "FreeTDS Development Group" <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] MONEY type support??
  • Date: Mon, 18 Dec 2006 07:15:54 -0600

Anyway to NOT have the client round it?

-----Original Message-----
From: freetds-bounces AT lists.ibiblio.org
[mailto:freetds-bounces AT lists.ibiblio.org] On Behalf Of
michael.peppler AT bnpparibas.com
Sent: Monday, December 18, 2006 12:51 AM
To: freetds AT lists.ibiblio.org
Subject: Re: [freetds] MONEY type support??

Actually, MONEY is fixed point, with 4 decimal places. The client almost

always rounds this to two decimal places, though.

Michael




Internet
james.k.lowden AT alliancebernstein.com@lists.ibiblio.org - 15.12.2006
23:44

Please respond to freetds AT lists.ibiblio.org
Sent by: freetds-bounces AT lists.ibiblio.org
To: freetds
cc:
Subject: Re: [freetds] MONEY type support??

> From: Sokol, Ryan - 244
> Sent: Friday, December 15, 2006 1:43 PM
>
> I ran both of your queries through tsql and isql (unixODBC's tool)
> on my Linux box and saw the rounding problem.

I'm not sure I'd call it a "problem". It could be a feature, letting
you not round things off to the nearest penny. "Money" doesn't usually
imply fractions of a penny; if you need that, you need a floating point
or exact numeric type.

> What case were you
> in to not see the rounding?

I used Microsoft's osql.exe and Query Analyzer. It seems they do not
round MONEY types when converting them to strings. Microsoft's isql.exe
rounds to 2 places.

I want to emphasize this is not standardized. T-SQL itself rounds to
two positions:

1> select cast(cast(.116 as money) as varchar(30))
2> go

------------------------------
0.12

One way around it, as you observed, is to convert to NUMERIC first.

> Unfortunately, it looks like everything from FreeTDS in ODBC mode
> automatically gets converted to a string.

No, the driver certainly doesn't convert anything unless asked. Likely
you're seeing PHP behavior, about which I don't know very much.

--jkl


>
> -----Original Message-----
> From: freetds-bounces AT lists.ibiblio.org
> [mailto:freetds-bounces AT lists.ibiblio.org] On Behalf Of Lowden,
> James K
> Sent: Friday, December 15, 2006 12:34 PM
>
> > From: Sokol, Ryan - 244 Sent: Friday, December 15, 2006 12:49 PM
> >
> > I am using the latest version of FreeTDS with unixODBC and PHP
> > 5.1.4. For some reason, columns of type MONEY from my MS SQL
> > Server 2005 are being rounded. For example, the value 0.195 is
> > being rounded to 0.20. But DECIMAL types are ok.
>
> I think you mean when you SELECT something of type MONEY and convert
> it to a string?
>
> It looks like that's FreeTDS's behavior. Microsoft's isql.exe does
> the same thing.
>
> 1> select cast(.116 as money) 2> go
>
> ------------------------
> 0.12
>
> I note their ODBC tools don't round.
>
> 1> select cast(.116 as smallmoney) 2> go
>
> ------------
> .1160

-----------------------------------------
The information contained in this transmission may be privileged and
confidential and is intended only for the use of the person(s) named
above. If you are not the intended recipient, or an employee or agent
responsible
for delivering this message to the intended recipient, any review,
dissemination,
distribution or duplication of this communication is strictly
prohibited.
If you are
not the intended recipient, please contact the sender immediately by
reply
e-mail
and destroy all copies of the original message. Please note that we do
not
accept
account orders and/or instructions by e-mail, and therefore will not be
responsible
for carrying out such orders and/or instructions. If you, as the
intended
recipient
of this message, the purpose of which is to inform and update our
clients,
prospects
and consultants of developments relating to our services and products,
would not
like to receive further e-mail correspondence from the sender, please
"reply" to the
sender indicating your wishes. In the U.S.: 1345 Avenue of the
Americas,
New York,
NY 10105.

_______________________________________________
FreeTDS mailing list
FreeTDS AT lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/freetds


This message and any attachments (the "message") is
intended solely for the addressees and is confidential.
If you receive this message in error, please delete it and
immediately notify the sender. Any use not in accord with
its purpose, any dissemination or disclosure, either whole
or partial, is prohibited except formal approval. The internet
can not guarantee the integrity of this message.
BNP PARIBAS (and its subsidiaries) shall (will) not
therefore be liable for the message if modified.

---------------------------------------------

Ce message et toutes les pieces jointes (ci-apres le
"message") sont etablis a l'intention exclusive de ses
destinataires et sont confidentiels. Si vous recevez ce
message par erreur, merci de le detruire et d'en avertir
immediatement l'expediteur. Toute utilisation de ce
message non conforme a sa destination, toute diffusion
ou toute publication, totale ou partielle, est interdite, sauf
autorisation expresse. L'internet ne permettant pas
d'assurer l'integrite de ce message, BNP PARIBAS (et ses
filiales) decline(nt) toute responsabilite au titre de ce
message, dans l'hypothese ou il aurait ete modifie.

_______________________________________________
FreeTDS mailing list
FreeTDS AT lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/freetds




Archive powered by MHonArc 2.6.24.

Top of Page