Как добавить месяц к определенной дате с помощью PHP? - PullRequest
0 голосов
/ 15 мая 2018

Я использую функцию now() для получения даты.Я пытался добавить месяц со многими функциями, такими как:

$today= date("Y-m-d");
$date1 = date('Y-m-d', strtotime($today, ' + 1 month'));

и после загрузки $date1 в БД MySQL, но когда я вижу в БД, дата вставки составляет 0000-00-00.Как я могу добавить этот месяц?

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Наличие даты в MySQL в качестве 0000-00-00 00:00:00 обычно означает, что дата, которую вы пытались сохранить в базе данных, не имела допустимого формата / не была распознана как дата в MySQL. Может быть, это проблема с тем, как вы вставляете или обновляете значение даты?

Вы также можете напрямую добавить месяц к дате в MySQL без необходимости выполнять вычисления в PHP с помощью встроенной функции DATE_ADD () из MySQL:

SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);

Например, запрос

SELECT DATE_ADD('2018-05-15 12:34:56', INTERVAL 1 MONTH);

вернет результат:

+---------------------------------------------------+
| DATE_ADD('2018-05-15 12:34:56', INTERVAL 1 MONTH) |
+---------------------------------------------------+
| 2018-06-15 12:34:56                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

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

UPDATE table_name SET column_name = DATE_ADD(NOW(), INTERVAL 1 MONTH)
WHERE id = your_id;

(Замените имя_таблицы , имя_ столбца , id и your_id в соответствии с вашими потребностями.)

0 голосов
/ 15 мая 2018

Вы сделали это более сложным, чем нужно.

$date1 = date('Y-m-d', strtotime(' + 1 month'));

Демо

strtotime() примет «сейчас», если вы не пройдете егодата и время.

В противном случае, как вы ее назвали, вы должны увидеть эту ошибку:

Предупреждение: strtotime () ожидает, что параметр 2 будет целым числом, строка указана в / tmp / execpad-a8173d5d91cb / source-a8173d5d91cb в строке

Это связано с тем, что strtotime() ожидает, что вторым параметром будет метка времени Unix, и вы явно предоставите строку.Приблизительное приближение к вашему коду:

$today= time();
$date1 = date('Y-m-d', strtotime(' + 1 month', $today));

Демонстрация

Если дата по-прежнему поступает в базу данных неправильно, то у вас возникла проблема за пределами вашего кода даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...