使用PHP打印MSSQL datetime到html的问题(sqlsrv扩展名)

时间:2011-07-27 14:25:51

标签: php sql-server

我有一个灵活的代码块,允许我将查询结果打印到一个简单的html表中。但是,当该表包含“datetime”类型的字段时,print()函数不起作用,我的循环结束。

在过去,使用PHP和MySQL(而不是Microsoft SQL Server,我现在正在使用它)打印日期没有问题,所以我不确定我现在缺少什么。

以下是代码:

// $row is the current row.
// $nkeys is the array of (String) keys that correspond to columns in the table.
do {
    print ("<tr>\n");
    foreach($nkeys as $k) {
        echo ("<td>$row[$k]</td>");
    } 
    print ("</tr>\n");
} while ($row = sqlsrv_fetch_array($stmt));

是否有除print()或echo之外的特殊功能才能正确打印日期?

4 个答案:

答案 0 :(得分:4)

SQLSRV扩展返回DateTime个对象。根据您的喜好format

if( !is_null($row[$k]) ){
    echo $row[$k]->format('r');
}

在您使用的过程界面中,您还可以通过提供ReturnDatesAsStrings connection option来禁用该功能(此选项在PDO界面中不可用),但通常没有理由这样做。

答案 1 :(得分:0)

使用SQLSRV时,不能使用以下内容:

date('d/m/y', strtotime($row['ActivityDate']))

相反,你必须使用:

date_format($row['ActivityDate'], 'd/m/y')

答案 2 :(得分:0)

虽然您可以通过SQLSRV更改返回Date Time Object的行为。这可以通过在连接选项中保持 ReturnDatesAsStrings TRUE来完成。改变连接代码如下所示:

$link = sqlsrv_connect( $db_server_name, array( "UID"=>$db_user,
            "PWD"=>$db_pass,
            "Database"=>$db_name,
            "ReturnDatesAsStrings"=>true
          ));

使用此功能,您现有的代码echo ("<td>$row[$k]</td>");将返回值,而无需任何其他解决方法。如果你有很多地方要申请“ - &gt;格式('r')”,请考虑这个。

答案 3 :(得分:0)

在jqGrid中使用日期字段时,在连接字符串中使用此字符非常重要。

"ReturnDatesAsStrings"=>true

很棒的东西,谢谢Mrigesh!