2013-02-07 46 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是日期格式

相關問題