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:12 -0600

Good point on the money rounding.

-----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 4:45 PM
To: FreeTDS Development Group
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




Archive powered by MHonArc 2.6.24.

Top of Page