2013-02-07 48 views
4

我最近将我的服务器上运行的PHP版本升级到5.3.20。从那以后,每当我将日期时间从MSSQL数据库(mssql_query)中抽出时,我都会得到奇怪的错误日期。为什么日期/时间不能正确使用PHP/MSSQL?

我检查了区域设置,默认时区设置为'Australia/Brisbane',我也检查了php.ini设置并确认mssql.datetimeconvert已关闭。日期似乎通过预先格式化(没有秒),当选项被打开时,但是当选项被关闭时,我得到一个看起来像这样的日期。

mssql.datetimeconvert(关闭):2013-07- 16时00分二十秒

mssql.datetimeconvert(上):2013年2月7日下午9时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" } 

,这是我接收右出的SQL Server工作室的输出

2013-02-08 14:00:24.673 

我可以理解它是如何被格式化的(因为那部分问题是回答如下),但我不明白为什么它通过这种格式或如何更改PHP的配置,以避免这种情况。在我升级PHP之前,它曾经作为2013-02-08 14:00:24。有没有人遇到过或见过这种情况?今天

+0

不知道答案,但出于兴趣,你也可以用PDO得到这个吗?数据库服务器上的时钟设置是否正确?在SQL Server控制台本地进行查询是否正确呈现日期? – halfer

+0

'mssql.datetimecovert'在这里是一个错字,还是你在php.ini中弄错了?它缺少'n'。 – halfer

+0

@halfer,只是一个错字 - 它实际上在ini文件中拼写正确。 –

回答

1

找到了解决方案,似乎坚持: -

我降级了freetds的版本被安装在服务器上:

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

而且固定日期。

不知道为什么。

0

07二月DAYOFYEAR()是38

大概probleme是日期格式

相关问题