У меня есть таблица MySQL, называемая температурой
Один из моих атрибутов называется "now". Он показывает временную метку на сервере.
Схема:
now (current_time), id (auto increment), temp (varchar 50)
Пример атрибутов now
2018-06-07 11:19:46
2018-06-08 02:06:12
У меня нет доступа к изменению времени на сервере.
После чтения значений теперь, как я могу добавить 5,5 часа?
Мой текущий код для чтения
$sql = "SELECT id, now, temp FROM temperature";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Time: " . $row["now"]. " . - Temperature: ". $row["temp"]. "<br>";
}
} else {
echo "no data";
}
Это возможно? Могу ли я добавить за 5 часов до эхо-сигнала?
Вы можете использовать функцию MYSQL ADDTIME в запросе.
SELECT id, ADDTIME(now, "5:30:0") AS now_added FROM temprature;
Похоже, ваш вопрос касается индийского национального часового пояса (+5: 30). Это имя часового пояса в базе данных zoneinfo - Asia/Kolkata
.
Я думаю, из вашего вопроса, что вы пытаетесь конвертировать времена из U Niversal Time Coordinated (UTC) в индийское время.
Неважно, будет ли ваш атрибут now
храниться в вашей таблице как столбец DATETIME
или TIMESTAMP
. Ваш вопрос не содержит достаточной информации, чтобы мы знали это; оба типа данных визуализируются с помощью текстовых строк, например, 2018-07-08 13:31:20
.
Если ваш атрибут now
является TIMESTAMP
вас хорошая ситуация. Зачем? MySQL хранит значения TIMESTAMP
со ссылкой на Universal Time Coordinated. Итак, все, что вам нужно сделать, это установить часовой пояс вашего соединения с MySQL, а затем выполнить свой запрос выбора, выполнив эти два запроса один за другим, с отдельными вызовами метода query()
.
SET time_zone = 'Asia/Kolkata';
SELECT id, now, temp FROM temperature;
MySQL преобразует ваши значения now
в Indian Time.
Если ваш now
столбец имеет тип данных DATETIME
, это означает, что данные в вашей таблице хранятся без ссылки на любой часовой пояс. В этом случае вы можете использовать этот запрос для преобразования этих значений из UTC в индийское время.
SELECT id, CONVERT_TZ(now,'UTC','Asia/Kolkata') AS now, temp FROM temperature
Чтобы использовать поддержку часового пояса MySQL, вам может потребоваться заполнить таблицы часовых поясов сервера. Сообщите администратору сервера об этом или посмотрите на эту страницу для получения инструкций. https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html
посмотрите на этот пример кода, используя функцию strtotime и дату, просто добавьте это, прежде чем повторить пример:
$selectedTime = $row['now'];
$endTime = date("H:i:s" ,strtotime("+5 hours 50 minutes", strtotime($selectedTime)));
echo $endTime;
"$row['now']"
что это?
"
он должен возвращать строковое значение элемента массива. Но "
не нужны, и не должны причинять вреда.