Форматирование даты внутри пользовательской функции (mysql) - PullRequest
0 голосов
/ 06 апреля 2019

Я выполнил школьное задание, но получил дополнительный кредит, если я отформатировал дату в определенной пользователем функции.Вот рабочий код:

DROP FUNCTION IF EXISTS in_sentence_form;

DELIMITER $$

CREATE FUNCTION in_sentence_form (u_name TEXT, b_date DATE)
RETURNS TEXT DETERMINISTIC
BEGIN
    DECLARE full_sentence TEXT;
    SET full_sentence = CONCAT(u_name,' was born on ',b_date,'.');
    RETURN full_sentence;
END$$

DELIMITER ;

Однако выводом является просто «Джон Доу родился 2001-01-01» (имя слева, дата справа);но что, если я хочу, чтобы выходные данные выглядели так: «Джон Доу родился в среду, 1 января 2001 года.»?

Я знаю, как форматировать дату:

DATE_FORMAT(b_date, '%W %D %M %Y');

но вставка строк и символов между спецификаторами, такими как "the", "of", ",", оказывается невозможной.

Онлайн-поиск не работает, так как мои поисковые слова должны быть почти точными с теми строками даты, которые использовали другие

1 Ответ

0 голосов
/ 06 апреля 2019

Вы можете вставить литералы в строку формата.

date_format(b_date, '%W, the %D of %M, %Y')

например:.

SELECT date_format(now(), '%W, the %D of %M, %Y');

приведет к

Saturday, the 6th of April, 2019

дб <> скрипка

...