MariaDB:如何使用STR_TO_DATE考虑本地日期格式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MariaDB:如何使用STR_TO_DATE考虑本地日期格式?相关的知识,希望对你有一定的参考价值。

我有一个csv文件,我想加载到表中。它有一个具有以下日期格式的列:

'%d-%b-%y'

例如:'01-Dez-18'。如果我考虑以下格式加载此文件:

IF(@entry_dt = '',NULL,STR_TO_DATE(@entry_dt, '%d-%b-%y'))

我收到警告:

函数str_to_date的日期时间值不正确:'01 -Dez-12'

这是由于列的格式是de_CH,但本地和全局设置是en_US。这就是01-Jan-12正确加载的原因。更改本地设置

SET lc_time_names = 'de_CH';

从那以后不起作用:

lc_time_names不影响STR_TO_DATE()或GET_FORMAT()函数

(见here)。

考虑德语/瑞士符号,有没有办法加载日期列?

答案

Monthname是德语(Dez)。如果你把它改成十二月就行了。

如果你想获得德语名称,你必须安装locale插件

1)看看是否已安装:

show plugins;

2)安装插件

INSTALL SONAME 'locales';

3)在my.ini中设置local或将其设置为全局

SET  lc_time_names = 'de_DE';
select STR_TO_DATE('01-Dec-18', '%d-%b-%y');

以上是关于MariaDB:如何使用STR_TO_DATE考虑本地日期格式?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 中使用 STR_TO_DATE 的日期转换查询

我:正在尝试使用 STR_TO_DATE 但为啥返回 null?

使用 MariaDB 在 JSON_CONTAINS() 中未考虑德语变音符号

mysql 之 str_to_date ()函数 和date_format()函数

mysql 之 str_to_date ()函数 和date_format()函数

MySQL STR_TO_DATE NULL 错误