我最近开始将我的PHP应用程序从Unix基础架构迁移到基于Windows的基础架构,并且此转换的一部分正在从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
我没有在文档中看到任何可以恢复旧行为的选项。我可以在前端应用程序中解释这一点,但是我们的应用程序的工作方式使这很困难,因为它设计用于输出这些字段" as-is"来自数据库。并非所有字段都是金额,有些是日期,有些只是字符串。修改该逻辑以仅从数量中修剪尾随零是困难的,并且是一项大的开发工作。
有没有办法更改SQL SRV驱动程序行为以不拉入尾随零?