Как преобразовать дату в цикле в нормальный вид?

Евгений Порощай

Делаю SELECT из базы и помещаю в переменную: (Дни рождения сотрудников в следующем месяце)

$result = $mysqli->query(‘SELECT NAME, LAST_NAME, PERSONAL_BIRTHDAY FROM b_user
WHERE MONTH(PERSONAL_BIRTHDAY) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));’); // запрос на выборку

$title .= ‘<b>Уважаемые Коллеги! </b><br /> <p>В следующем месяце отмечают свой день рождения:</b><br /></p>’;
while($row = $result->fetch_assoc())// получаем все строки в цикле по одной
{
$message .= ‘<p><b>’.$row[‘NAME’]. ‘ ‘.$row[‘LAST_NAME’].'</b>, Дата рождения: ‘.$row[‘PERSONAL_BIRTHDAY’].'</p>’;// выводим данные
}

Данные выводятся в таком формате:

Денис Федотов, Дата рождения: 1991-02-14

Дмитрий Силкин, Дата рождения: 1984-02-19

Роман Гельвельчук, Дата рождения: 1991-02-26

Александр Сердюков, Дата рождения: 1990-02-17

Как преобразовать дату в ’14 февраля 1991′ в этом цикле. Или хотя бы в ’14 February 1991′

Всю голову сломал.

Если добавляю формат даты непосредственно в SELECT:

SELECT NAME, LAST_NAME, DATE_FORMAT(PERSONAL_BIRTHDAY, (‘%d %M %Y’)) FROM b_user
WHERE MONTH(PERSONAL_BIRTHDAY) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));

То PHP воспринимает грависы SELECT(а), как разрыв строки и ругается. Замена грависа на двойные кавычки не помогает

 

MouseZver

google – mysql DATE_FORMAT

 

miketomlin

date(‘d M Y’,strtotime($date))
natdate(strtotime($date)) – см. https://php.ru/forum/posts/560078/

 

mkramer

А что, про экранирование апострофов и кавычек не читаем? Есть специальная комбинация в php:

PHP:
  1. echo ”’ . ;
 

miketomlin

P.S. M – это сокращенное название месяца, F – полное.

 

Евгений Порощай

Можете носом ткунь, в то место, куда его ставить?

 

Drunkenmunky

$mysqli->query(SELECT

 

Евгений Порощай

Только с одной стороны? С двух сторон когда поставил двойные – он мне вообще ничего не вывел.
— Добавлено —
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);// включаем сообщения об ошибках
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name); // коннект с сервером бд

$mysqli->set_charset(“utf8mb4”); // задаем кодировку

$result = $mysqli->query(“SELECT NAME, LAST_NAME, DATE_FORMAT(PERSONAL_BIRTHDAY, (‘%d %M %Y’)) FROM b_user
WHERE MONTH(PERSONAL_BIRTHDAY) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));”); // запрос на выборку
$count = mysqli_num_rows($result); // количество строк в запросе
$title .= ‘<b>Уважаемые Коллеги! </b><br /> <p>В следующем месяце отмечают свой день рождения:</b><br /></p>’;
while($row = $result->fetch_assoc())// получаем все строки в цикле по одной
{

$message .= ‘<p><b>’.$row[‘NAME’]. ‘ ‘.$row[‘LAST_NAME’].'</b>, Дата рождения: ‘.$row[‘PERSONAL_BIRTHDAY’].'</p>’;// выводим данные
}

обернул SELECT в двойные кавычки – вывод в столбце PERSONAL_BIRTHDAY – пустой

 

MouseZver

Евгений Порощай

Поставил тут:
$result = $mysqli->query(‘SELECT NAME, LAST_NAME, DATE_FORMAT(PERSONAL_BIRTHDAY, (‘%d %M %Y’)) FROM b_user
WHERE MONTH(PERSONAL_BIRTHDAY) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));’); // запрос на выборку

Вывод такой:

В следующем месяце отмечают свой день рождения:

Денис Федотов, Дата рождения:

Дмитрий Силкин, Дата рождения:

Роман Гельвельчук, Дата рождения:

Александр Сердюков, Дата рождения:

Сама дата не отображается теперь

 

miketomlin

Ф-цию представления религия не позволяет использовать? Каждый раз при необходимости изменить формат даты будете лезть в текст запроса? Хотя с показанным кодом не мудрено :(
— Добавлено —
В запросе используйте либо дефолтный формат даты, либо unixtime. Нефиг в нем что-то форматировать под вывод для пользователя.

 

Евгений Порощай

спасибо что отправили к GOOGLE. не внимательно прочитал. DATE_FORMAT создает новое поле. А я указывал старое. Теперь всё работает. Буду работать над кодом. Спасибо за помощь ВСЕМ! Не судите строго, третий день изучаю PHP самостоятельно.

 

miketomlin

К чему цитирование моих слов? Я вас в гугл не посылал, а четко ответил на вопрос

;)
— Добавлено —

Если вы не понимаете даваемые вам ответы, не стесняйтесь переспрашивать. Игнор из-за непонимания – дебилизм. Удачи!

 

php8guru

Почитайте про класс DateTime ему можно скармливать вашу дату и с помощью метода format получать нужную

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *