Как добавить 4 часа ко времени в PHP / MySQL

Подстановка переменных в подготовленных инструкциях PDO не поддерживает массивы. Это один на один.

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

$variables = array ('1', '2', '3');
$placeholders = str_repeat ('?, ',  count ($variables) - 1) . '?';

$query = $pdo -> prepare ("SELECT * FROM table WHERE column IN($placeholders)");
if ($query -> execute ($variables)) {
    // ...
}
13
задан TWLATL 2 November 2009 в 14:31
поделиться

7 ответов

date($format, strtotime("$date + 4 hours"));
31
ответ дан 1 December 2019 в 17:26
поделиться

Нет ничего, что мешало бы использовать ADDTIME () в INSERT OR UPDATE , но DATE_ADD () , вероятно, то, что будет работать лучше всего:

INSERT INTO table_name
SET my_datetime = DATE_ADD('2009-11-01 19:30:00', INTERVAL 4 HOURS),
...other insert columns here... ;
14
ответ дан 1 December 2019 в 17:26
поделиться

А как насчет:

date( "Y-m-d H:i:s", strtotime( "2009-08-09 23:44:22" )+4*60*60 )

или даже

date( "Y-m-d H:i:s", strtotime( "2009-08-09 23:44:22 + 4 hours" ) )

Может потребоваться небольшая проверка ошибок, но это должно решить вашу проблему.

6
ответ дан 1 December 2019 в 17:26
поделиться

Или лучше в SQL

DATE(DATE_ADD(`Table`.`Column`, INTERVAL 4 HOURS))
3
ответ дан 1 December 2019 в 17:26
поделиться

Похоже, что для TZ вашей базы данных установлено значение GMT ​​(UTC), как и должно быть. При добавлении в базу данных вам необходимо преобразовать местную дату в GMT.

из Справочного руководства MySQL 5.1:

CONVERT_TZ(dt,from_tz,to_tz)

CONVERT_TZ () преобразует значение datetime dt из часового пояса, заданного from_tz, в часовой пояс, заданный to_tz и возвращает полученное значение. Часовые пояса могут быть указаны, как описано в Разделе 5.10.8, «Поддержка часовых поясов сервера MySQL». Эта функция возвращает NULL, если аргументы недопустимы.

Если значение выпадает из поддерживаемого диапазона типа TIMESTAMP при преобразовании fom from_tz в UTC, преобразование не происходит. Диапазон TIMESTAMP описан в Раздел 11.1.2, «Обзор типов даты и времени».

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
        -> '2004-01-01 13:00:00'

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
        -> '2004-01-01 22:00:00'
1
ответ дан 1 December 2019 в 17:26
поделиться

Для всех ответов, использующих DATE_ADD, правильный синтаксис - «4 ЧАСА», а не «4 ЧАСА» (по крайней мере, в текущей версии MySQL):

UPDATE table SET field = DATE_ADD (field, INTERVAL 4 HOUR);

2
ответ дан 1 December 2019 в 17:26
поделиться

Я использовал этот метод:

$format = Y-m-d; //you can use any format if you want
$date = $row['date']; // from mysql_fetch_array
$date2 = date($format, strtotime("$date + 4 week"));
echo $date;
0
ответ дан 1 December 2019 в 17:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: