在 MSSQL 上获取日期时间
Get datetime on MSSQL
我有一个 Microsoft 数据库,我查询 returns 一系列值。一切都很好,除了当我想要获取日期时,有些东西不起作用而且我不知道它是什么。
查询结果如下:
Array ( [0] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-07 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-07 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-04 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-04 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-07 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-07 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) )
如何获取"date"的值?我尝试这样做,但没有得到任何结果:
echo '</table>';
echo '</div>';
echo '<div class="tbl-content">';
echo '<table cellpadding="0" cellspacing="0" border="0">';
echo '<tbody>';
while ($row = sqlsrv_fetch_array($result)){
echo "<tr>";
echo "<td>$row[0]</td>";
echo "<td>$row[1]</td>";
echo "<td>$row[2]</td>";
echo "<td>$row[4]</td>";
if($row[7]== '1') {
echo "<td>Si</td>";
} else if($row[7]== '0') {
echo "<td>'No'</td>";
}
echo "<td>$row[5]</td>"; //NO RESULT THERE
echo "</tr>";
}
echo '</tbody>';
echo '</table>';
echo '</div>';
作为一般规则,您不能打印对象,除非它们具有 __toString()
method that makes sense. The DateTime
class 没有:
echo new DateTime();
# Recoverable fatal error: Object of class DateTime could not be converted to string
只是 format 你喜欢:
echo (new DateTime())->format('c');
# 2017-04-11T11:11:28+02:00
echo (new DateTime())->format('r');
# Tue, 11 Apr 2017 11:11:49 +0200
echo (new DateTime())->format('d/m/Y');
# 11/04/2017
您还忽略了需要生成 HTML,而不是纯文本:
echo '<td>' . htmlspecialchars($row[0]->format('d/m/Y')) . '</td>';
PHP 对象有自己的属性和方法。您不能简单地回显(打印)对象并期望得到一个字符串。检查文档或 var_dump
ing 对象可以为您提供方法或 属性 您应该用来访问字符串值。在这种情况下,它是一个 DateTime 对象,因此您应该能够使用 DateTime::format('Y-m-d')
访问日期并对其进行格式化。
在您的特定情况下,您应该能够对每个日期对象使用 $row[0]->format('Y/m/d H:i:s')
以将它们作为字符串获取。显然在适用的地方更改索引。
我有一个 Microsoft 数据库,我查询 returns 一系列值。一切都很好,除了当我想要获取日期时,有些东西不起作用而且我不知道它是什么。
查询结果如下:
Array ( [0] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-07 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-07 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-04 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-04 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-07 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-07 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) ) Array ( [0] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [1] => DateTime Object ( [date] => 2017-04-10 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) )
如何获取"date"的值?我尝试这样做,但没有得到任何结果:
echo '</table>';
echo '</div>';
echo '<div class="tbl-content">';
echo '<table cellpadding="0" cellspacing="0" border="0">';
echo '<tbody>';
while ($row = sqlsrv_fetch_array($result)){
echo "<tr>";
echo "<td>$row[0]</td>";
echo "<td>$row[1]</td>";
echo "<td>$row[2]</td>";
echo "<td>$row[4]</td>";
if($row[7]== '1') {
echo "<td>Si</td>";
} else if($row[7]== '0') {
echo "<td>'No'</td>";
}
echo "<td>$row[5]</td>"; //NO RESULT THERE
echo "</tr>";
}
echo '</tbody>';
echo '</table>';
echo '</div>';
作为一般规则,您不能打印对象,除非它们具有 __toString()
method that makes sense. The DateTime
class 没有:
echo new DateTime();
# Recoverable fatal error: Object of class DateTime could not be converted to string
只是 format 你喜欢:
echo (new DateTime())->format('c');
# 2017-04-11T11:11:28+02:00
echo (new DateTime())->format('r');
# Tue, 11 Apr 2017 11:11:49 +0200
echo (new DateTime())->format('d/m/Y');
# 11/04/2017
您还忽略了需要生成 HTML,而不是纯文本:
echo '<td>' . htmlspecialchars($row[0]->format('d/m/Y')) . '</td>';
PHP 对象有自己的属性和方法。您不能简单地回显(打印)对象并期望得到一个字符串。检查文档或 var_dump
ing 对象可以为您提供方法或 属性 您应该用来访问字符串值。在这种情况下,它是一个 DateTime 对象,因此您应该能够使用 DateTime::format('Y-m-d')
访问日期并对其进行格式化。
在您的特定情况下,您应该能够对每个日期对象使用 $row[0]->format('Y/m/d H:i:s')
以将它们作为字符串获取。显然在适用的地方更改索引。