Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQLSRV驱动程序从PHP中的货币字段中删除额外的零?_Php_Sql Server_Sqlsrv - Fatal编程技术网

如何使用SQLSRV驱动程序从PHP中的货币字段中删除额外的零?

如何使用SQLSRV驱动程序从PHP中的货币字段中删除额外的零?,php,sql-server,sqlsrv,Php,Sql Server,Sqlsrv,我最近开始将我的PHP应用程序从Unix基础架构迁移到基于Windows的基础架构,其中一部分是为了DB交互而从mssql_connect迁移到sqlsrv_connect。在大多数情况下,这是无痛的,除了在DAL中更改SQL驱动程序外,我们的目标是对整个代码库进行最小的更改 我注意到的一个问题是,默认情况下,日期列作为PHP日期对象返回。虽然这很好,但我们已经编写了处理字符串日期的逻辑,幸运的是,我们能够标记一个选项,将日期作为字符串返回。这与旧MSSQL驱动程序的行为相匹配 然而,现在我们看

我最近开始将我的PHP应用程序从Unix基础架构迁移到基于Windows的基础架构,其中一部分是为了DB交互而从mssql_connect迁移到sqlsrv_connect。在大多数情况下,这是无痛的,除了在DAL中更改SQL驱动程序外,我们的目标是对整个代码库进行最小的更改

我注意到的一个问题是,默认情况下,日期列作为PHP日期对象返回。虽然这很好,但我们已经编写了处理字符串日期的逻辑,幸运的是,我们能够标记一个选项,将日期作为字符串返回。这与旧MSSQL驱动程序的行为相匹配

然而,现在我们看到money数据类型字段返回时在结尾处有两个额外的零。例如,SQL studio中的此查询:

select applied_amt from transaction_detail_071515 where batch = '0000521'
返回:

applied_amt
52.00
但是,当我通过PHP运行相同的程序时,会得到以下结果:

applied_amt
52.0000
请注意末尾的额外零。即使金额为非零分,也会返回额外的零:

1825.4200
我在文档中没有看到任何恢复到旧行为的选项。我可以在前端应用程序中解释这一点,但是我们的应用程序的工作方式使得这一点很困难,因为它被设计为从数据库“按原样”输出这些字段。并非所有字段都是金额,有些是日期,有些只是字符串。修改该逻辑以仅从数量中修剪尾随的零将是困难的,并且是一项巨大的开发工作


有没有办法改变SQL SRV驱动程序的行为,使其不引入尾随的零

货币数据类型有4位小数。如果需要不同的数据类型,则需要更改列的数据类型,将输出强制转换为所需的数据类型,或在前端处理格式设置。那么旧的MSSQL驱动程序是否“不正确”?它以前从未返回过4位小数。自从我开始使用sql server时至少6.5以来,money数据类型从未更改。也许PHP方面发生了一些变化。我几乎不会拼写PHP,更不用说了解它了。我希望我能给你一个答案。我建议要么格式化结果,要么使用十进制数据类型,而不是传统的money数据类型。