Php 如果DateTime对象为空
我在表单提交后返回一些搜索结果。一切都很正常,直到我找到一个SMALLDATETIME字段并允许NULL。返回的行中至少有一行的字段为NULL。正如您在下面的代码中所看到的,当它不为NULL时,我会将它从Date转换为String,这没有问题,但是我会收到一条关于NULL行的错误消息 有什么想法吗 代码: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
$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>";