我想更改数据库表“时间”列中的日期格式,但我起诉了此代码,但没有生效!
我用代码尝试了一下,但是没有用!日期编辑的一部分是
$date = "SELECT DATE_FORMAT(time, '%m/%d/%Y %H:%i') FROM climate";
这是我的完整代码:
$conn = mysqli_connect($servername, $username, $password, $database);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
$sql = "INSERT INTO climate (temp, hum, time) VALUES ('$temp',
'$hum',
'$time')";
$date = "SELECT DATE_FORMAT(time, '%m/%d/%Y %H:%i') FROM climate";
if (mysqli_query($conn, $date)) {
// output data of each row
echo "OK";
} else {
echo "0 results";
}
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
答案 0 :(得分:0)
MySQL中任何日期类型列中存储的格式将为YYYY-MM-DD HH:MM:SS
。这不能更改-但这没有关系,因为您可以在选择值时以任意方式对其进行格式化-检索后在PHP中或在DATE_FORMAT()
语句中使用SELECT
。
您还应该使用准备好的语句,而不是将值直接注入查询中。
这些SELECT
语句将只选择一行-但这只是为了说明在插入值后 格式化的原理(如前所述,它们始终具有表格中的相同格式。
请记住,当您将数据发送到SQL时,其格式应明确无误,例如YYYY-MM-DD HH:MM:SS
,否则可能会造成混淆的日期(例如2/1/2019
是2月1日) ,还是一月二号?)。
// Inserting a new row
$sql = "INSERT INTO climate (temp, hum, time) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sss", $temp, $hum, $time);
$stmt->execute();
$stmt->close();
// Fetch a row and format the time in SQL
$sql = "SELECT DATE_FORMAT(time, '%m/%d/%Y %H:%i') FROM climate";
$stmt = $conn->prepare($sql);
$stmt->execute();
$stmt->bind_result($time_formatted);
$stmt->fetch();
echo $time_formatted;
$stmt->close();
或者,您可以在获取后用PHP对其进行格式化
$sql = "SELECT time FROM climate";
$stmt = $conn->prepare($sql);
$stmt->execute();
$stmt->bind_result($time_formatted);
$stmt->fetch();
$stmt->close();
$date = new DateTime($time_formatted);
echo $date->format("m/d/Y H:i");
请记住,这没有错误处理,并且始终假设一切正常,您可能要考虑添加一些适当的错误处理。