mysql 特定国家/地区的日期格式

mysql date format regarding to a specific country

我使用了 MySQL 函数 DATE_FORMAT(table.field, '%d %b %Y'),其中第一个参数是我的列,第二个是根据日期逻辑格式化列的模式。

这个函数的输出是英文的:

10 Feb 2014

我想将区域设置语言设置为 fr_FR 这将输出正确的字符串:

10 Fév 2014

问题:如何在查询之前更改数据库的区域设置语言(以便根据另一种语言进行更改)?

您需要在 MySQL 服务器中设置正确的语言设置。看这里:MySQL DATE_FORMAT() function

用于日月名称和缩写的语言由 lc_time_names 系统变量的值控制(第 10.7 节,“MySQL 服务器区域设置支持”)。

运行 在您的查询之前:

SET lc_time_names = 'fr_FR';

然后设置回原来的值lc_time_names;

试试这个,希望对您有所帮助:

SELECT
  CONCAT(DATE_FORMAT(CURDATE(), '%d'), " ",
  CASE
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Jan' THEN '01'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Feb' THEN '02'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Mar' THEN '03'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Apr' THEN '04'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'May' THEN '05'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Jun' THEN '06'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Jul' THEN '07'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Aug' THEN '08'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Sep' THEN '09'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Oct' THEN '10'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Nov' THEN '11'
    WHEN DATE_FORMAT(CURDATE(), '%b') = 'Dec' THEN '12'
  END, " ",
  DATE_FORMAT(CURDATE(), '%Y')) AS DATE