Я хочу изменить формат даты в столбце Time таблицы моей базы данных, и я подал в суд на этот код, но ничего не произошло!
Я пробовал это с кодом, но не работал! часть редактирования даты
$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);
}
Помните о SQL-инъекциях
Значит, мой путь неверный! как можно изменить? Спасибо
Совершенно непонятно, чего мы здесь пытаемся добиться. Функция DATE_FORMAT возвращает строковое значение. Выполнение оператора SELECT, включающего функцию DATE_FORMAT в выражение в списке выбора, ничего не меняет в базе данных. DATE, DATETIME, TIMESTAMP, TIME типы данных имеют формат(ы) по умолчанию, которые MySQL ожидает/интерпретирует. dev.mysql.com/doc/refman/8.0/en/datetime.html для предоставления значения в каком-либо другом формате, мы можем использовать такую функцию, как STR_TO_DATE. dev.mysql.com/doc/refman/5.5/en/…
Кроме того, я думаю, мы можем просто сказать "Спасибо за отчет о состоянии". Потому что не похоже, что был задан фактический вопрос. ericlippert.com/2014/03/05/как-отлаживать-маленькие-программы






Формат, который хранится в любом столбце типа даты в MySQL, будет иметь формат YYYY-MM-DD HH:MM:SS. Это не может быть изменено, но это не имеет значения, так как вы можете отформатировать его любым удобным для вас способом при выборе значений — либо в PHP после его получения, либо с помощью DATE_FORMAT() в операторе SELECT.
Вы также должны использовать подготовленные операторы вместо того, чтобы вводить значения непосредственно в запрос.
Эти операторы SELECT будут выбирать только одну строку, но они просто показывают принцип форматирования после значений, которые были вставлены (поскольку они, как было сказано ранее, всегда будут иметь один и тот же формат в таблице).
Имейте в виду, что когда вы отправляете данные в SQL, они должны быть в недвусмысленном формате, таком как YYYY-MM-DD HH:MM:SS, иначе вы рискуете перепутать даты (например, 2/1/2019 первое февраля или второе января?).
// 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");
Имейте в виду, что это не имеет обработки ошибок и всегда предполагает, что все всегда будет работать, вы можете подумать о добавлении правильной обработки ошибок.
Я пробовал, но не менял формат времени в таблице.
Как я уже сказал, в таблице это не изменится. Это тоже не нужно. Вы должны отформатировать его, когда вы выбираете его. Прочитайте описание вместе с ответом.
да, теперь я понимаю, большое спасибо :) Я новичок в PHP и учусь. :)
Формат всегда будет
YYYY-MM-DD HH:MM:SSв базе данных. Вам нужно отформатировать его, когда вы выбираете его.