从SQL数据库获取日期会产生错误

时间:2018-08-28 05:55:05

标签: php sql-server datetime

我一直在尝试从SQL Server数据库中获取校准日期,但是它似乎不起作用。

while($row = sqlsrv_fetch_array($result))  
{ 
$output .= "<tr><td>".$row['businessUnit']."</td><td>".
    $row['productGroup']."</td><td>".
    $row['deviceType']."</td><td>".
    $row['serialNumber']."</td><td>".    
    $row['location']."</td><td></td><td>".
    $row['condition']."</td><td>".
    $row['calibrationDate']."</td><td>".
    $row['itemDescription']."</td><td>
    <input type='checkbox'></input></td></tr>";  
}  
return $output;

如果我这样做,则会收到此错误:DateTime类的对象无法转换为字符串

但是,当我尝试这样格式化它时:

$row['calibrationDate']->format('Y-m-d')

我收到另一个错误:未捕获的错误:在null上调用成员函数format()

我也尝试过先将其转换为新的DateTime:

$date = new DateTime($row['calibrationDate']);

然后我得到:未捕获的TypeError:DateTime :: __ construct()期望参数1为字符串,给定对象

我不知道这是否与问题有关,但并非所有列都在该列中有日期。 数据库中的数据类型为“日期”,格式为“ Y-m-d”。如何获取要显示的日期?

3 个答案:

答案 0 :(得分:0)

您应该使用strtotimedate函数

$calibrationDate= strtotime($row['calibrationDate']);
echo date('Y-m-d H:i:s', $calibrationDate);

答案 1 :(得分:0)

您可以像这样使用php strtotime()和date()函数

date('Y-m-d H:i:s',strtotime(($row['calibrationDate']))."</td><td>".

答案 2 :(得分:0)

如果要检索日期和时间类型(日期时间,日期,时间,日期时间2和日期时间偏移)作为字符串,则必须将连接选项ReturnDatesAsStrings设置为true

$server = 'server\instance,port';
$cinfo = array(
    "ReturnDatesAsStrings"=>true,
    "Database"=>'database',
    "UID"=>"user",
    "PWD"=>"password"
);

有关sqlsrv_connect()连接选项的文档可以在here中找到。