首页 > 解决方案 > 在 SQL 查询中设置日期格式

问题描述

我正在从 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,即“YYYY-MM-DD”(日期)。

我无法更改数据库的整体语言,因为我也在丹麦语和英语中使用它。所以我需要弄清楚如何做到这一点

在此处输入图像描述

标签: mysqlsql

解决方案


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 年份,数字,四位数

推荐阅读