2013-11-21 4 views
1

Прежде всего - я полный нуб, поэтому я даже не знаю, правильно ли я это называю.Изменить временную метку в дате

Это, конечно, также влияет на результаты, которые я получаю при поиске. До сих пор я не нашел то, что искал.

А на вершине этого, мой первый язык не английский ...

Но здесь идет:

У меня есть календарь бронирования, который использует MySql. По-видимому, возникла проблема с функцией php date, и что-то было исправлено на сервере. Это приводит к тому, что никакие заказы не отображаются.

я сузили его до метки времени в дату, которая хранится в MySql:

Старая версия была 23:00 GMT, как время В новой версии 00:00 GMT, как время

По вручную вычитая 82800 из числа, сохраненного в качестве даты начала и даты окончания в базе данных, я смог сделать заказы. Но есть много заказов, и я пытался найти решение, в котором я могу запустить SQL-запрос, чтобы обновить все заказы.

I would need to test if the date ends in 23:00 GMT 
If true, then subtract 82800 
And go to the next post in the table 

Или, по крайней мере, что-то в этом районе. Возможно, существует даже стандартный способ для этого ...

Поскольку я совершенно новичок в этом, не стесняйтесь указывать мне правильную вещь для поиска или ссылки на решение в другом месте.

Я обращаюсь к базе данных через phpMyAdmin.

+0

столбец с меткой времени? – Babblo

ответ

1

Предполагая, что ваш столбец соответствует формату даты и времени, вы можете сделать это в одном запросе. (Не забудьте взять резервную копию первой, однако.)

UPDATE your_table 
SET booking_time = DATE_SUB(booking_time, INTERVAL 23 HOUR) 
WHERE booking_time LIKE '%23:00:00' 

Если это, скажем, VARCHAR, вы, вероятно, хотите, чтобы написать PHP, который собирается занять немного больше времени:

  1. Получить все заказы.
  2. Петля через них. Для каждого бронирования:
  3. Используйте стандартные функции строки, чтобы проверить, является ли бронирование 23:00 GMT.
  4. Если это так, извлеките дату и используйте strtotime(), чтобы получить его в формате Unix. (Если это не так, просто продолжайте цикл.)
  5. Вычитайте 82800 из значения времени Unix и используйте date(), чтобы переформатировать его в нужную дату.
  6. Обновите строку бронирования в базе данных новой меткой времени.
Смежные вопросы