PHP - часовой пояс MYSQL - добавление дополнительных часов перед отображением строк

0

У меня есть таблица 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 часов до эхо-сигнала?

  • 0
    Да, ты можешь. Используйте strtotime и дату.
  • 0
    Возможно дублирование php сложения или вычитания смещения часового пояса
Показать ещё 3 комментария
Теги:
datetime
timezone

3 ответа

1
Лучший ответ

Вы можете использовать функцию MYSQL ADDTIME в запросе.

SELECT id, ADDTIME(now, "5:30:0") AS now_added FROM temprature;
-1

Похоже, ваш вопрос касается индийского национального часового пояса (+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

-2

посмотрите на этот пример кода, используя функцию strtotime и дату, просто добавьте это, прежде чем повторить пример:

  $selectedTime = $row['now'];
  $endTime = date("H:i:s" ,strtotime("+5 hours 50 minutes", strtotime($selectedTime)));
  echo $endTime;
  • 0
    "$row['now']" что это?
  • 0
    @RaymondNijland, поскольку он заключен в " он должен возвращать строковое значение элемента массива. Но " не нужны, и не должны причинять вреда.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню