результат, получаемый ноль, преобразовывая значение даты и времени оракула в секунду в php - PullRequest
2 голосов
/ 17 октября 2011

здесь сначала код

$sql = 'SELECT DATETIME, CURRVALUE FROM DATEVALUE';
$stid = oci_parse($conn, $sql);
oci_define_by_name($stid,'DATETIME', $agev);
oci_define_by_name($stid,  'CURRVALUE', $snv);
oci_execute($stid);
$resultXML = new SimpleXMLElement(stripslashes('<data></data>'));
while (oci_fetch($stid)) {  
      $agev = oci_result($stid, 'DATETIME');
    $snv = oci_result($stid, 'CURRVALUE');
     //settype($agev, "string"); 
    $date_2 = strtotime($agev);
    settype($date_2, "integer"); 
     //settype($snv, "float");  
    $temp = $resultXML->addChild('node'); 
    $temp->addChild('agev',$date_2);
    $temp->addChild('snv',$snv); 
} 

<node>
<agev>0</agev>
<snv>1</snv>
</node>

результат для currvalue хорош, но для значения datetime он выводит только ноль, если я делаю addtimevalue без использования strtotime, он будет выводить datetime в строке, но это не то, что мне нужно.... пожалуйста помогите ~. ~

1 Ответ

2 голосов
/ 17 октября 2011

Вот два способа, которые могут помочь решить проблему.

Первый (возможно, лучший) способ: изменить SQL-запрос.

Пусть Oracle выведет дату в другом формате, который strtotime распознает. Если DATETIME является обычным столбцом типа даты в вашей базе данных, рассмотрите возможность использования функции Oracle TO_CHAR для изменения ее выходного формата. Что-то вроде:

$sql = "SELECT TO_CHAR(DATETIME, 'YYYY-MM-DD HH24:MI:SS') AS DATETIME, CURRVALUE FROM DATEVALUE";

Второй способ: используйте strptime.

Вместо использования strtotime рассмотрите возможность использования strptime . Формат даты, который вы показываете в ваших комментариях, кажется близким к:

%d-%b-%y %H.%I.%S %p

Я не уверен, есть ли опция формата даты для миллисекундной части. Предполагая, что без него он будет правильно разбираться, изменив строку:

$date_2 = strtotime($agev);

до:

$date_2 = strptime($agev, '%d-%b-%y %H.%I.%S %p');

должен это сделать. Вы все равно получите ошибку, если мое предположение неверно.

...