【问题标题】:Oracle SQL and strtotime - updating recordOracle SQL 和 strtotime - 更新记录
【发布时间】:2019-02-09 15:17:57
【问题描述】:

当我更新记录时,我偶尔会在我的字段中插入 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"]; ?>'>
    

日期选择器:

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

所以 Oracle 的格式是 DD-Mon-YYYY,而日期选择器的格式是 dd-M-yy

dd(2 位数的日期)

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);
      }
    

【问题讨论】:

    标签: php sql oracle datepicker strtotime


    【解决方案1】:

    尝试使用to_date 函数明确告诉Oracle 期望输入字符串的格式,并将其转换为date 对象以供内部处理:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多