INSPDATE是MS SQL数据库中的日期时间字段。通常,当我们输入日期时,浏览器会自动将其更正为我们的EST,但不适用于我正在创建的检查报告。我尝试过
echo date('m/d/Y g:i a ', strtotime($row['INSPDATE']));
但是它返回的日期是1970年(12/31/1969 7:00 pm),并且没有从数据库中提取值。
下面是我使用的返回日期,就像它保存在数据库中一样。我知道有一种方法可以减去18000以调整为EST(-5小时),但是我不确定将其放置在何处。我收到有关混合日期时间和非数字值的错误消息。
<?php
require_once ('connection.php');
$sql = "SELECT INSPDATE, FACILID FROM dbo.SWFACILITYINSPECTION WHERE FACILID = 'E667'";
$query = sqlsrv_query( $conn, $sql );
while ($row=sqlsrv_fetch_array( $query )) {
//This will show dates, but it's database time (UTC, so +5 hours)
echo date_format($row['INSPDATE'], 'm/d/Y g:i a ');
}
?>
答案 0 :(得分:0)
您应该始终在应用程序逻辑中进行此转换,因为您的sql是内联的,所以我想您可以将计算嵌入到sql中。如果我对PHP有更好的了解,那么我将更倾向于使用应用程序的语言来学习日期数学,这样您就可以构建一个时区库以用于其他日期的日期,并释放您的查询,将过程存储为仅查询和返回数据的存储过程。
DECLARE @Offset INT = -5
SELECT INSPDATE_UTC=INSPDATE, INSPDATE_LOCAL = DATEADD(HOUR, @Offset,INSPDATE)