Php 如果DateTime对象为空

Php 如果DateTime对象为空,php,sql,sql-server,Php,Sql,Sql Server,我在表单提交后返回一些搜索结果。一切都很正常,直到我找到一个SMALLDATETIME字段并允许NULL。返回的行中至少有一行的字段为NULL。正如您在下面的代码中所看到的,当它不为NULL时,我会将它从Date转换为String,这没有问题,但是我会收到一条关于NULL行的错误消息 有什么想法吗 代码: $search\u results=sqlsrv\u query($database\u connection,$search\u results\u sql,array(),array(“S

我在表单提交后返回一些搜索结果。一切都很正常,直到我找到一个SMALLDATETIME字段并允许NULL。返回的行中至少有一行的字段为NULL。正如您在下面的代码中所看到的,当它不为NULL时,我会将它从Date转换为String,这没有问题,但是我会收到一条关于NULL行的错误消息

有什么想法吗

代码:

$search\u results=sqlsrv\u query($database\u connection,$search\u results\u sql,array(),array(“Scrollable”=>sqlsrv\u CURSOR\u KEYSET));
如果($search\u results){
$returned_rows=sqlsrv_has_rows($search_results);
if($returned_rows===true){
getAssetSearchData($搜索结果);
}
}
函数getAssetSearchData($search\u results){
while($search\u results\u option=sqlsrv\u fetch\u object($search\u results)){
回声“
.date\u格式($search\u results\u option->HardwareAssetLastUpdateTime,“d/m/Y H:i”)
“$search\u results\u option->HardwareAssetLastUpdatedByName。”
“.date格式($search\u results\u option->HardwareAssetLastDiscoveryScanDate,“d/m/Y H:i”)”;
}
}
错误消息:

警告:date_format()要求参数1为DateTimeInterface, 中给出的空值

试试这个

<td class='col45'>".date_format(new DateTime( $search_results_option->HardwareAssetLastUpdateTime ),"d/m/Y H:i")."</td>
<td class='col46'>".$search_results_option->HardwareAssetLastUpdatedByName."</td>
<td class='col47'>".date_format(new DateTime( $search_results_option->HardwareAssetLastDiscoveryScanDate ),"d/m/Y H:i")."</td></tr>";
.date格式(新的日期时间($search\u results\u option->HardwareAssetLastUpdateTime),“d/m/Y H:i”) “$search\u results\u option->HardwareAssetLastUpdatedByName。” .date格式(新的DateTime($search\u results\u option->HardwareAssetLastDiscoveryScanDate),“d/m/Y H:i”);
date\u format()

另一件事可能是,
$search\u results\u option
为空

对于空值:

($search\u results\u option->HardwareAssetLastDiscoveryScanDate!=null?date\u格式(新日期时间($search\u results\u option->HardwareAssetLastDiscoveryScanDate),“d/m/Y H:i”):“”)

这将检查空值,如果不为空,将显示格式化的日期时间,els eit将不显示任何内容(
<td>".(
   is_null($search_results_option->HardwareAssetLastDiscoveryScanDate) ? '' : 
       date_format($search_results_option->HardwareAssetLastDiscoveryScanDate,
        "d/m/Y H:i")
    )
 ."</td>";
是否为空($search\u results\u option->HardwareAssetLastDiscoveryScanDate)?“”: 日期格式($search\u results\u option->HardwareAssetLastDiscoveryScanDate, “d/m/Y H:i”) ) ."";
您可以添加一个检查($search\u results\u option->HardwareAssetLastUpdateTime==NULL)。当您将“on update current_timestamp”标志添加到DBdate格式的LastUpdateTime时,它可能会对您有所帮助。如果DBdate格式不适用于空日期值,则。您必须管理此案例。HardwareAssetLastDiscoveryScanDate的$search\u results\u选项为空
<td>".(
   is_null($search_results_option->HardwareAssetLastDiscoveryScanDate) ? '' : 
       date_format($search_results_option->HardwareAssetLastDiscoveryScanDate,
        "d/m/Y H:i")
    )
 ."</td>";