Установка формата даты в запросе SQL - PullRequest
0 голосов
/ 12 декабря 2018

Я получаю данные из 3 разных таблиц (используя INNER JOIN) для создания HTML-кода, который дает мне случайную портретную фотографию человека и даты рождения и смерти людей (см. Результат здесь: https://www.hafdal.dk/legstadaleit/- под изображением надгробия).

Это мой запрос:

SELECT CONCAT (
    '<center><img src="https://www.hafdal.dk/tng/andlitsmyndir/',
    tng_media.path,'" alt="',
    tng_media.description,
    '" width="250"><br><a href="https://www.hafdal.dk/legstadaleit/index.php/database/?page=www.hafdal.dk/tng/getperson.php%3FpersonID%3D',
    tng_medialinks.personID,
    '"><b>',
    tng_media.description, 
    '</b><br>', 
    'f. ', 
    tng_people.birthdate, 
    ' - d. ', 
    tng_people.deathdate, 
    '</a></center>') 
FROM `tng_media`   
INNER JOIN tng_medialinks on tng_media.mediaID=tng_medialinks.mediaID  
INNER JOIN tng_people on tng_people.personID=tng_medialinks.personID   
WHERE mediatypeID="11"
ORDER BY RAND() 
LIMIT 1

Как мне отформатировать дату так, чтобы она выглядела исландской, то есть названия месяцевна исландском языке и есть . после номера даты и названия месяца?Например: 12. des. 2018.

Я попытался вставить:

DATE_FORMAT (tng_people.birthdate, '%d. %M %Y')

, где tng_people.birthdate, но, к сожалению, это не работает.

Возможноизменить формат даты с помощью SQL-запроса?У меня нет возможности добавлять / изменять базу данных, просто извлекая из нее данные.

Формат даты рождения в базе данных: «dd MMM YYYYY» на английском языке (varchar (50)).У меня также есть возможность использовать переменную birthdatetr, которая называется «ГГГГ-ММ-ДД» (дата).

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

enter image description here

1 Ответ

0 голосов
/ 12 декабря 2018

Из Date_Format() документации :

Язык, используемый для названий и сокращений дней и месяцев, определяется значением системной переменной lc_time_names

Для Исландии значение локали равно is_IS.Проверьте полный список по адресу: https://dev.mysql.com/doc/refman/5.7/en/locale-support.html

Вам необходимо установить системную переменную перед вызовом запроса:

SET SESSION lc_time_names = 'is_IS';

Кроме того, ваша строка спецификатора Date_format() должна быть изменена на:

DATE_FORMAT (tng_people.birthdate, '%d. %b. %Y')

Подробности :

  • %d День месяца, числовой (00..31)
  • %b Сокращенное название месяца (Jan..Dec)
  • %Y Год, цифра, четыре цифры
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...