【问题标题】:how to insert date value to oracle in php如何在php中将日期值插入oracle
【发布时间】:2014-08-07 13:56:27
【问题描述】:

我在使用 php 向 oracle 数据库输入日期值时遇到问题。在我进入表格之前,我将值转换为日期但没有工作。结果总是“1970-01-01”,不应该是那个日期。

我的脚本如下:

$kol[$n] = $worksheet->getCellByColumnAndRow($n, $row)->getValue();
$koldate = date('Y-m-d', $kol[$n]);
$sValues = "$sValues '".$koldate."'," ;
echo "$koldate";

如果有人可以帮忙?

谢谢。

巴斯科罗

【问题讨论】:

    标签: php oracle date phpexcel


    【解决方案1】:

    Excel 日期/时间是序列化的时间戳,即自 1900 年 1 月 1 日(或 1904 年 1 月 1 日,如果使用 Mac 1904 日历)以来的天数。

    如果您使用getValue() 从包含日期/时间值的单元格中读取值,那么您将获得该原始时间戳。

    您可以分别使用PHPExcel_Shared_Date::ExcelToPHP()PHPExcel_Shared_Date::ExcelToPHPObject() 方法将该值转换为unix 时间戳或PHP DateTime 对象。转换后,您可以使用 PHP 的普通日期函数或 DateTime 方法(视情况而定)将格式转换为Y-m-d

    $tmpDate = $worksheet->getCellByColumnAndRow($n, $row)->getValue();
    $kol[$n] = PHPExcel_Shared_Date::ExcelToPHP($tmpDate);
    $koldate = date('Y-m-d', $kol[$n]);
    $sValues = "$sValues '".$koldate."'," ;
    echo "$koldate";
    

    【讨论】:

    • 嗨,马克,我仍然收到这样的错误:警告:strtotime() 期望参数 1 是字符串,对象在 D:\xampp\htdocs\Upload\uploadrainerface.php 第 67 行中给出跨度>
    • 那么您的代码中的第 67 行(以及它上面的几行)是什么?除非单元格中的值是富文本对象(根本不是日期),否则您永远不应该从对 getValue() 的调用中获取对象,而只是序列化 Excel 日期时间值的浮点数
    • 这里是代码:第 65 行 $tempDate = $worksheet->getCellByColumnAndRow($n, $row)->getValue();第 66 行 $kol[$n] = PHPExcel_Shared_Date::ExcelToPHPObject($tempDate);第 67 行 $koldate = date('m-d-Y', strtotime($kol[$n]));第 68 行 $sValues = "$sValues '".$koldate."'," ;
    • 如果你使用ExcelToPHPObject(),你会得到一个PHP DateTime 对象,然后你必须使用DateTime 对象的format() 方法将DateTime 对象转换为人类可读的格式... .. 如果您想使用date() 函数使unix timestamp 可读,那么您需要使用ExcelToPHP() 将MS Excel 序列化日期/时间戳转换为unix 时间戳
    • 我将其更改为 ExcelToPhp() 但值仍然是“01-01-1970”
    【解决方案2】:

    date() 的第二个参数必须是 Unix 时间戳。因此,除非$kol[$n] 已经是 Unix 时间戳,否则您需要先将其转换为 1,然后再将其传递给 date()。您可以为此使用strtotime()

    $koldate = date('Y-m-d', strtotime($kol[$n]));
    

    仅供参考,这假设 $kol[$n]an acceptable date format 中。

    【讨论】:

    • 它不起作用。我从excel文件中获取日期。日期是 2013 年 9 月 30 日。
    • 为我工作:eval.in/176926。确保 $kol[$n] 实际上包含您认为它包含的值。
    • 如果我手动将 strtotime($kol[$n]) 更改为 strtotime('09/30/2013') 效果很好。
    • 对,这意味着$kol[$n] 不包含您认为它包含的值。你需要弄清楚原因。
    • Excel 文件中的值可能看起来像日期,但实际上是一个浮点值(可能是 41547.00),它是 Excel 序列化的datetime 值,正是单元格格式掩码使它看起来像人类可读的日期
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多