使用PHP(sqlsrv扩展)将MSSQL日期时间打印为html时出现问题

使用PHP(sqlsrv扩展)将MSSQL日期时间打印为html时出现问题,php,sql-server,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

我有一个灵活的代码块,允许我将查询结果打印到一个简单的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));
/$row是当前行。
//$nkeys是与表中的列相对应的(字符串)键数组。
做{
打印(“\n”);
foreach($nkeys为$k){
回声(“$row[$k]”);
} 
打印(“\n”);
}而($row=sqlsrv_fetch_array($stmt));

除了print()或echo之外,是否有其他特殊函数可以正确打印日期?

SQLSRV扩展返回对象。只要你喜欢:

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

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

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

date('d/m/y', strtotime($row['ActivityDate']))
相反,您必须使用:

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

尽管可以通过SQLSRV更改返回日期时间对象的行为。这可以通过在连接选项中保持returnDateSasStringTRUE来实现。按如下所示更改连接代码将实现以下目的:

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

使用此命令,您现有的代码
echo($row[$k])将返回值,无需任何其他解决方法。如果你有很多点应用“->格式('r')”,

,在使用JQGrand中的日期字段时,在连接字符串中有这一点非常重要。p>
"ReturnDatesAsStrings"=>true
好东西,谢谢你,伊格什先生