MySQL系统变量之lc_time_names语言环境

        通常在面向全球化的系统中,会根据所在地区设置时区(设置当前会话的 time_zone 系统变量的值),以使显示当地日期时间。如何将日期显示为当地区域格式呢?本文将结合 lc_time_names 系统变量进行举例。

目录

1、查看MySQL语言区域

2、设置MySQL语言区域

3、MySQL支持的语言

4、DATE_FORMAT()函数

5、IANA已注册的语言


环境配置:

1、查看MySQL语言区域

-- 查看MySQL当前会话语言区域
SHOW VARIABLES LIKE '%lc_time_names%';

-- 查看MySQL全局语言区域
SHOW GLOBAL VARIABLES LIKE '%lc_time_names%';

默认值为 en_US,与 操作系统 的区域设置无关。

2、设置MySQL语言区域

如设置以 中文 格式显示:

-- 设置MySQL当前会话语言区域
SET lc_time_names='zh_CN';
-- 或
SET @@lc_time_names='zh_CN';
-- 或
SET @@SESSION.lc_time_names='zh_CN';
-- 或
SET SESSION lc_time_names='zh_CN';


-- 设置MySQL全局语言区域(临时,重启前生效)
SET @@GLOBAL.lc_time_names='zh_CN';
-- 或
SET GLOBAL lc_time_names='zh_CN';

lc_time_names 变量对 日期和时间函数 的影响:

  • 影响 DATE_FORMAT()、DAYNAME()、MONTHNAME() 函数的输出
  • 不影响 STR_TO_DATE()、GET_FORMAT() 、FORMAT()、NOW() 功能
  • 可以在运行时设置 SESSION 或 GLOBAL 级的值;或者在《my.cnf》中全局系统变量

3、MySQL支持的语言

MySQL支持的语言环境集 与 操作系统支持的语言环境不同,lc_time_names 变量可用值如下:

区域值意义
ar_AE阿拉伯语 - 阿拉伯联合酋长国
ar_BH阿拉伯语 - 巴林
ar_DZ阿拉伯语 - 阿尔及利亚
ar_EG阿拉伯语 - 埃及
ar_IN阿拉伯语 - 印度
ar_IQ阿拉伯语 - 伊拉克
ar_JO阿拉伯语 - 约旦
ar_KW阿拉伯语 - 科威特
ar_LB阿拉伯语 - 黎巴嫩
ar_LY阿拉伯语 - 利比亚
ar_MA阿拉伯语 - 摩洛哥
ar_OM阿拉伯语 - 阿曼
ar_QA阿拉伯语 - 卡塔尔
ar_SA阿拉伯语 - 沙特阿拉伯
ar_SD阿拉伯语 - 苏丹
ar_SY阿拉伯语 - 叙利亚
ar_TN阿拉伯语 - 突尼斯
ar_YE阿拉伯语 - 也门
be_BY白俄罗斯语 - 白俄罗斯
bg_BG保加利亚语 - 保加利亚
ca_ES加泰罗尼亚语 - 西班牙
cs_CZ捷克 - 捷克共和国
da_DK丹麦语 - 丹麦
de_AT德国 - 奥地利
de_BE德国 - 比利时
de_CH德国 - 瑞士
de_DE德语 - 德国
de_LU德语 - 卢森堡
el_GR希腊语 - 希腊
en_AU英语 - 澳大利亚
en_CA英语 - 加拿大
en_GB英语 - 英国
en_IN英语 - 印度
en_NZ英语 - 新西兰
en_PH英语 - 菲律宾
en_US美国英语
en_ZA英语 - 南非
en_ZW英语 - 津巴布韦
es_AR西班牙语 - 阿根廷
es_BO西班牙语 - 玻利维亚
es_CL西班牙语 - 智利
es_CO西班牙语 - 哥伦比亚
es_CR西班牙语 - 哥斯达黎加
es_DO西班牙语 - 多米尼加共和国
es_EC西班牙语 - 厄瓜多尔
es_ES西班牙语 - 西班牙
es_GT西班牙语 - 危地马拉
es_HN西班牙语 - 洪都拉斯
es_MX西班牙语 - 墨西哥
es_NI西班牙语 - 尼加拉瓜
es_PA西班牙语 - 巴拿马
es_PE西班牙语 - 秘鲁
es_PR西班牙语 - 波多黎各
es_PY西班牙语 - 巴拉圭
es_SV英语-萨尔瓦多
es_US西班牙语 - 美国
es_UY西班牙语 - 乌拉圭
es_VE西班牙语 - 委内瑞拉
et_EE爱沙尼亚语 - 爱沙尼亚
eu_ES巴斯克 - 西班牙
fi_FI芬兰语 - 芬兰
fo_FO法罗语 - 法罗群岛
fr_BE法语 - 比利时
fr_CA法语 - 加拿大
fr_CH法语 - 瑞士
fr_FR法语 - 法国
fr_LU法语 - 卢森堡
gl_ES加利西亚 - 西班牙
gu_IN古吉拉特语 - 印度
he_IL希伯来语 - 以色列
hi_IN否 - 印度
hr_HR克罗地亚语 - 克罗地亚
hu_HU匈牙利语 - 匈牙利
id_ID印度尼西亚语 - 印度尼西亚语
is_IS冰岛语 - 冰岛
it_CH意大利语 - 瑞士
it_IT意大利语 - 意大利
ja_JP日本 - 日本
ko_KR韩语 - 大韩民国
lt_LT立陶宛语 - 立陶宛语
lv_LV拉脱维亚语 - 拉脱维亚语
mk_MK马其顿 - 北马其顿
mn_MN蒙古 - 蒙古语
ms_MY马来语 - 马来西亚
nb_NO挪威语(博克马尔) - 挪威
nl_BE荷兰语 - 比利时
nl_NL荷兰语 - 荷兰
no_NO挪威语 - 挪威
pl_PL波兰语 - 波兰
pt_BR葡萄牙语 - 巴西
pt_PT葡萄牙语 - 葡萄牙
rm_CH罗曼什语 - 瑞士
ro_RO罗马尼亚语 - 罗马尼亚
ru_RU俄语 - 俄罗斯
ru_UA俄语 - 乌克兰
sk_SK斯洛伐克 - 斯洛伐克
sl_SI斯洛文尼亚语 - 斯洛文尼亚
sq_AL阿尔巴尼亚语 - 阿尔巴尼亚语
sr_RS塞尔维亚语 - 塞尔维亚
sv_FI瑞典语 - 芬兰
sv_SE瑞典语 - 瑞典
ta_IN泰米尔语 - 印度
te_IN泰卢固语 - 印度
th_TH泰语 - 泰国
tr_TR土耳其语 - 土耳其
uk_UA乌克兰语 - 乌克兰
ur_PK乌尔都语 - 巴基斯坦
vi_VN越南语 - 越南
zh_CN中国 - 中国
zh_HK中文 - 香港
zh_TW中国 - 台湾

4、DATE_FORMAT()函数

  • 语法:DATE_FORMAT(date, format)
  • 描述:根据 format 字符串 格式化 date
  • 说明:如果任一参数是NULL,则函数返回 NULL

以下 说明符 可以用在 format 字符串中:

说明符描述
%a工作日的缩写名称 ( Sun.. Sat)
%b缩写月份名称 ( Jan.. Dec)
%c月份,数字 ( 0.. 12)
%D0th带有英文后缀 ( , 1st2nd3rd, ...)的月份中的某天
%d月份中的日期,数字 ( 00.. 31)
%e月份中的日期,数字 ( 0.. 31)
%f微秒 ( 000000.. 999999)
%H小时(00.. 23
%h小时(01.. 12
%I小时(01.. 12
%i分钟,数字 ( 00.. 59)
%j一年中的某一天 ( 001.. 366)
%k小时(0.. 23
%l小时(1.. 12
%M月份名称 ( January.. December)
%m月份,数字 ( 00.. 12)
%pAM或者PM
%r时间,12 小时(hh:mm:ss后跟 AMor PM
%S ( 00.. 59)
%s ( 00.. 59)
%T时间,24 小时制 ( hh:mm:ss)
%U

周 ( 00.. 53),其中星期日是一周的第一天; WEEK()模式 0

%u

周 ( 00.. 53),其中星期一是一周的第一天; WEEK()模式一

%V

周 ( 01.. 53),其中星期日是一周的第一天; WEEK()模式二;与 %X

%v

周 ( 01.. 53),其中星期一是一周的第一天; WEEK()模式3;与 %x

%W工作日名称 ( Sunday.. Saturday)
%w星期几(0=星期日.. 6=星期六)
%X星期天是一周的第一天的一周年,数字,四位数字;与%V
%x一周的年份,其中星期一是一周的第一天,数字,四位数字;与%v
%Y年份,数字,四位数
%y年份,数字(两位数)
%%文字%字符
%Xx, 对于上面未列出的任何 “ x

 说明符 同样适用于函数:STR_TO_DATE()TIME_FORMAT() UNIX_TIMESTAMP()

5、IANA已注册的语言

        IANA (The Internet Assigned Numbers Authority,互联网数字分配机构)是负责协调一些使Internet正常运作的机构。同时,由于Internet已经成为一个全球范围的不受集权控制的全球网络,为了使网络在全球范围内协调,存在对互联网一些关键的部分达成技术共识的需要,而这就是IANA的任务。

Language Subtag Registry - Protocol Registrieshttps://www.iana.org/protocols

IANA 列出的语言和区域子标签https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

参考:

MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variableshttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_lc_time_names

MySQL :: MySQL 8.0 Reference Manual :: 10.16 MySQL Server Locale Supporthttps://dev.mysql.com/doc/refman/8.0/en/locale-support.html

MySQL :: MySQL 8.0 Reference Manual :: 12.7 Date and Time Functionshttps://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Ubuntu上设置MySQL的lower_case_table_names参数无效可能是由于以下几个原因: 1. 参数设置错误:请确保在MySQL配置文件中正确设置了lower_case_table_names参数。可以通过编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件来修改参数值。确保在[mysqld]部分添加或修改lower_case_table_names = 1,并重新启动MySQL服务。 2. 配置文件位置错误:在某些情况下,MySQL的配置文件可能位于不同的位置。可以通过运行以下命令来查找配置文件的位置:sudo find / -name "my.cnf"。然后在找到的配置文件中进行相应的修改。 3. 参数冲突:如果在MySQL配置文件中同时设置了lower_case_table_names参数和其他与大小写相关的参数(如lower_case_file_system),可能会导致参数无效。请确保只设置lower_case_table_names参数,并将其他相关参数注释掉或删除。 4. 参数生效范围:lower_case_table_names参数只对新创建的表有效,对于已存在的表可能不会生效。如果需要将已存在的表名转换为小写,可以使用RENAME TABLE语句进行修改。 5. 数据库引擎限制:某些数据库引擎(如InnoDB)可能对lower_case_table_names参数有限制。请确保使用的数据库引擎支持该参数,并且已正确配置。 如果以上方法都无效,您可以尝试重新安装MySQL,并在安装过程中正确设置lower_case_table_names参数。另外,您还可以查看MySQL的错误日志文件(通常位于/var/log/mysql/error.log),以获取更多关于参数设置无效的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂龙骄子

独码乐,不如众码乐,乐享其中

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值