Oracle SQL и strtotime - обновление записи - PullRequest
0 голосов
/ 04 сентября 2018

Когда я обновляю запись, мне иногда приходится вставлять 1969 год в мою область. Год обновляется с 2016 по 1969 год. Есть ли проблема с датой STRTOTIME? Я не уверен, в чем проблема ...

  1. Я выбираю дату из таблицы

     SELECT to_char(a.MOV_DATE, 'DD-Mon-YYYY') as MOV_DATE FROM SCHOOL.MOV a
    
  2. Я вставляю дату во входные данные JQuery Datepicker ...

     <input type="text" name="movdat" id="datepicker" class="boxit" required readonly="readonly" style="cursor:pointer; background-color: #FFFFFF; width:140px;" value='<?php echo $objResult["MOV_DATE"]; ?>'>
    

DatePicker:

     <script>
       $(function() {
         $("#datepicker").datepicker({ 
           dateFormat:'dd-M-yy',
           maxDate: 0
         }).val();
        });
      </script>

Таким образом, формат от Oracle - DD-Mon-YYYY, а от средства выбора даты - dd-M-yy

дд (двухзначный день)

М (месяц - короткий)

гг (4 цифры года)

так они выглядят так, как будто совпадают.

  1. PHP - хранить дату от даты выбора и год извлечения

    $f4 = $_POST['movdat']; // new date
    
    $f5 = date('Y', strtotime($f4)); // year
    
  2. Обновление записи

      $sql = oci_parse($conn,"UPDATE SCHOOL.MOV SET MOV_DATE=:mdat,
                                                    YEAR=:ye
                                                WHERE id='265'");
    
    
      oci_bind_by_name($sql, ':mdat', $f4);
      oci_bind_by_name($sql, ':ye', $f5);
    
      $objExec = oci_execute($sql, OCI_DEFAULT);
    
      if ($objExec) {  
         oci_commit($conn);
      }
    

1 Ответ

0 голосов
/ 06 сентября 2018

Попробуйте использовать функцию to_date, чтобы явно указать Oracle, в каком формате ожидать входную строку, и преобразовать ее в date объект для внутренней обработки:

UPDATE SCHOOL.MOV SET
  MOV_DATE = to_date(:mdat, 'DD-Mon-YYYY'),
  YEAR = :ye
WHERE
  id = '265'
...