从 Oracle 数据库获取时使用 php 将时间戳转换为 Unix 时间戳
Using php Convert timestamp to Unix timestamp while fetching from Oracle database
我正在尝试使用 php 从 oracle 数据库中获取带时间的日期(时间戳)。
<?php
include("mydb.php");
// run query
$sql = "select WDAT,DATA from xet ";
$stid=oci_parse($conn, $sql);
// set array
$arr = array();
if(!$stid){
$e=oci_error($conn);
trigger_error(htmlentities($e[message],ENT_QUOTES),E_USER_ERROR);
}
$r=oci_execute($stid);
if(!$r){
$e=oci_error($stid);
trigger_error(htmlentities($e[message],ENT_QUOTES),E_USER_ERROR);
}
// look through query
while($row = oci_fetch_array($stid,OCI_ASSOC)){
$arr[] = array(strtotime($row['WDAT']) , (float)$row['DATA']);
}
// debug:
echo json_encode($arr);
我得到以下输出=>
[[false,15.739993],[false,13.698263],[false,13.214383],.....]
如果我使用
while($row = oci_fetch_array($stid,OCI_ASSOC)){
$arr[] = array($row['WDAT'] , (float)$row['DATA']);
}
然后得到以下输出=>
[["25-FEB-15 12.14.00.000000 AM",15.739993],["25-FEB-15 12.33.00.000000 AM",13.698263],.....]
但我希望输出为
[[1424823240,15.739993],[1424824380,13.698263],......]
搞不懂我怎么才能得到它?请帮忙
看来您需要结合您建议的两个示例。使用 'WDAT'
的 $row 索引时,第二次尝试缺少 strtotime
第二个问题是数据库返回的时间戳没有被 strtotime 正确解析,所以它返回 false。这是对完整的时间戳执行的,包括末尾的 AM/PM(即使它是 24 小时制)。
我们可以通过如下方式删除它来解决这个问题:
<?php
while($row = oci_fetch_array($stid,OCI_ASSOC)){
$formattedDate = str_replace( array('AM', 'PM'), '', $row['WDAT']);
$arr[] = array(strtotime($formattedDate) , (float)$row['DATA']);
}
这是一个fiddlehttp://phpfiddle.org/lite/code/11tc-9was
我正在尝试使用 php 从 oracle 数据库中获取带时间的日期(时间戳)。
<?php
include("mydb.php");
// run query
$sql = "select WDAT,DATA from xet ";
$stid=oci_parse($conn, $sql);
// set array
$arr = array();
if(!$stid){
$e=oci_error($conn);
trigger_error(htmlentities($e[message],ENT_QUOTES),E_USER_ERROR);
}
$r=oci_execute($stid);
if(!$r){
$e=oci_error($stid);
trigger_error(htmlentities($e[message],ENT_QUOTES),E_USER_ERROR);
}
// look through query
while($row = oci_fetch_array($stid,OCI_ASSOC)){
$arr[] = array(strtotime($row['WDAT']) , (float)$row['DATA']);
}
// debug:
echo json_encode($arr);
我得到以下输出=>
[[false,15.739993],[false,13.698263],[false,13.214383],.....]
如果我使用
while($row = oci_fetch_array($stid,OCI_ASSOC)){
$arr[] = array($row['WDAT'] , (float)$row['DATA']);
}
然后得到以下输出=>
[["25-FEB-15 12.14.00.000000 AM",15.739993],["25-FEB-15 12.33.00.000000 AM",13.698263],.....]
但我希望输出为
[[1424823240,15.739993],[1424824380,13.698263],......]
搞不懂我怎么才能得到它?请帮忙
看来您需要结合您建议的两个示例。使用 'WDAT'
第二个问题是数据库返回的时间戳没有被 strtotime 正确解析,所以它返回 false。这是对完整的时间戳执行的,包括末尾的 AM/PM(即使它是 24 小时制)。 我们可以通过如下方式删除它来解决这个问题:
<?php
while($row = oci_fetch_array($stid,OCI_ASSOC)){
$formattedDate = str_replace( array('AM', 'PM'), '', $row['WDAT']);
$arr[] = array(strtotime($formattedDate) , (float)$row['DATA']);
}
这是一个fiddlehttp://phpfiddle.org/lite/code/11tc-9was