【问题标题】:Mysql Datetime field, update only date using phpMysql Datetime 字段,仅使用 php 更新日期
【发布时间】:2012-11-23 03:25:00
【问题描述】:

我在 MYSQL 中仅更新日期时间字段类型中的日期时遇到问题。

我正在使用 PHP 获取用户 (dd/mm/yyyy) 的输入,并使用 UPDATE mysql 语句仅更改日期。但日期时间字段仅显示 0000-00-00 00:00:00。

下面的代码只是一个 php 文件,它在从使用 XMLHttprequest 传递值的 php 获取输入后更新表。

请在下面查看我的代码:

<?php include 'accesscontrol.php'; ?>
<?php
$q4=$_GET["q4"];

$user = $_SESSION['user'];

$date_array = explode( "/", $q4 );
$new = sprintf( '%4d-%02d-%02d', $date_array[2], $date_array[1], $date_array[0] );


$con = mysql_connect("localhost","tst","tst!@#");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("test", $con);

mysql_query("UPDATE INVHDR_edit SET Invdate= concat ('$new', time(Invdate)) WHERE usr='$user'");


if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }

mysql_close($con);
?>

【问题讨论】:

    标签: php mysql datetime


    【解决方案1】:

    试试这个 ::

    UPDATE INVHDR_edit SET Invdate= STR_TO_DATE(Invdate, '%d-%b-%y') WHERE usr='$user'");
    

    如果使用变量:

    UPDATE INVHDR_edit SET Invdate= STR_TO_DATE(@var1, '%d-%b-%y') WHERE usr='$user'");
    

    【讨论】:

    • 我想从变量中获取日期值,在您的回复中,这是缺失的,请检查
    • 试过了,它在字段(日期时间)中给出了 NULL 值
    • 如果我错了,请纠正我,您需要使用具有数据作为日期的变量更新列吗?您不想使用当前时间更新该列吗?
    • 是的,您是正确的,只有要更新的日期并保留日期时间字段中已经存在的时间。
    • 请将日期存储到一个变量中,并在查询执行前尝试打印该变量,然后通过查看格式,我将更新我的查询
    【解决方案2】:

    试试这个查询:UPDATE INVHDR_edit SET Invdate='".$new." 00:00:00' WHERE usr='$user'");

    如果您需要时间追加使用以下内容。

    $new = $new.date(" H:i:s");
    mysql_query("UPDATE INVHDR_edit SET Invdate='$new' WHERE usr='$user'");
    

    【讨论】:

    • 在您的回复中,您将时间指定为 00:00:00,在这种情况下,它将更新 00 而不是保留现有时间。请检查
    【解决方案3】:

    试试这个

    <?php include 'accesscontrol.php'; 
    $q4 = $_GET["q4"];
    $user = $_SESSION['user'];
    $dateSql = date("Y-m-d H:i:s",strtotime($q4));
    $con = mysql_connect("localhost","tst","tst!@#");
    if (!$con){
      die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("test", $con);
    mysql_query("UPDATE INVHDR_edit SET Invdate= '$dateSql' WHERE usr='$user'");
    if (!mysql_query($sql,$con)){
      die('Error: ' . mysql_error());
    }
    mysql_close($con);
    ?>
    

    【讨论】:

    • 即使这不起作用,它也会在字段中存储这个值 1970-01-01 05:30:00。我认为因为我的 $q4 值将采用 04/05/2012 格式。
    • mysql 只允许你在日期时间字段中插入 Y-m-d H:i:s 格式。
    • 没错,如果你看到我上面的 php 代码,我正在格式化日期,然后以 Y-m-d 格式存储它
    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2017-11-15
    • 2014-04-07
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多