sql server - 为什么 PHP/MSSQL 无法正确显示日期/时间?



我最近将服务器上运行的PHP版本升级到5.3.20。从那以后,每当我从MSSQL数据库(MSSQL_query)中提取日期时间时,我都会得到奇怪的错误日期。

我已经检查了区域设置,默认时区设置为"澳大利亚/布里斯班",我还检查了php.ini设置,并确认mssql.datetimeconvert已关闭。当选项打开时,日期似乎是经过预格式化的(没有秒),但当选项关闭时,我会得到一个这样的日期。

mssql.datetimeconvert(关闭):2013-07-3816:00:20

mssql.datetimeconvert(on):2013年2月7日上午09:37

有简单的解决办法吗?

以下是比较mysql/mssql源之间输出的代码:

$rs = $db->query("select id, servertime from bobstable where id = 86427420");
$mss_set = mssql_query("select id, servertime from T_bobstable WITH (NOLOCK) where id = 86427420");
$myrow = $rs->fetch_assoc();
$msrow = mssql_fetch_array($mss_set);
var_dump($myrow);
echo "<br>";
var_dump($msrow);

其输出如下:

array(2) { ["id"]=> string(8) "86427420" ["servertime"]=> string(19) "2013-02-08 14:00:24" } 
array(4) { [0]=> float(86427420) ["id"]=> float(86427420) [1]=> string(19) "2013-08-39 24:673:0" ["servertime"]=> string(19) "2013-08-39 24:673:0" }

这是我从SQLServerStudio收到的输出

2013-02-08 14:00:24.673

我可以理解它是如何格式化的(正如下面回答的部分问题),但我不明白为什么它会以这种格式出现,也不明白如何更改PHP的配置以避免这种情况。在我升级PHP之前,它曾经是2013-02-08 14:00:24。以前有人经历过或见过这种情况吗?

找到了一个似乎坚持的解决方案:-

我将服务器上安装的FreeTDS版本从降级

freetds.x86_64 0.91-2.el5  to 
freetds.x86_64 0.64-11.el5.centos

这就确定了日期。

不知道为什么。

今天是2月7日,DAYOFYEAR()是38。

问题可能出在日期格式

相关内容

  • 没有找到相关文章

最新更新