我在MYSQL中仅更新日期时间字段类型的日期时遇到问题。
我正在使用PHP从用户(dd / mm / yyyy)获取输入,并使用UPDATE mysql语句仅更改日期。但是datetime字段只显示00:00:00。
下面的代码只是php文件,它在从php传入值后使用XMLHttprequest传递值来更新表。
请参阅下面的代码:
<?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);
?>
答案 0 :(得分:2)
试试这个
<?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);
?>
答案 1 :(得分:1)
尝试使用此查询: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'");
答案 2 :(得分:0)
试试这个::
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'");