Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中nls语言的日期时间_Mysql_Sql_Oracle_Date_Select - Fatal编程技术网

mysql中nls语言的日期时间

mysql中nls语言的日期时间,mysql,sql,oracle,date,select,Mysql,Sql,Oracle,Date,Select,需要将oracle格式的sql转换为mysql to_date(25-JAN-2020,'DD-MON-YYYY','nls_date_language = FRENCH'). 在mysql中,我们可以通过改变会话来改变nls_date_语言,但是我们可以像上面在mysql中使用oracle那样单独使用datetime来代替改变会话。事实上,这比你想象的更值得 在MySQL中,Oracle的to_date()等价于str_to_date(),而nls_date_语言对应于系统变量 然而,正如(

需要将oracle格式的sql转换为mysql

to_date(25-JAN-2020,'DD-MON-YYYY','nls_date_language = FRENCH').

在mysql中,我们可以通过改变会话来改变nls_date_语言,但是我们可以像上面在mysql中使用oracle那样单独使用datetime来代替改变会话。

事实上,这比你想象的更值得

在MySQL中,Oracle的
to_date()
等价于
str_to_date()
,而
nls_date_语言
对应于系统变量

然而,正如(我的重点是):

此变量影响
DATE\u FORMAT()
DAYNAME()
MONTHNAME()
函数的输出

lc\u-time\u-names
不影响
STR\u-TO\u-DATE()
GET\u-FORMAT()
函数

因此,您无法实际解析
dd mon yyyy
格式的日期,其中
mon
是非英语月份,仅使用内置函数和系统变量

我能想到的唯一解决方案是在解析之前手动翻译日期缩写,使用大量嵌套的
REPLACE()
s或
CASE
表达式。。。一些月份名称在法语和英语之间确实匹配,这一事实稍微简化了任务:

select str_to_date(
    case 
        when mystr like '%FEV%' then replace(mystr, 'FEV', 'FEB')
        when mystr like '%AVR%' then replace(mystr, 'AVR', 'APR'),
        when mystr like '%MAI%' then replace(mystr, 'MAI', 'MAY')
        when mystr like '%JUI%' then replace(mystr, 'JUI', 'JUL'),
        when mystr like '%AOU%' then replace(mystr, 'AOU', 'AUG')
    end,
    '%d-%b-%Y'
) mydate
from ...

事实上,它比你想象的要值钱

在MySQL中,Oracle的
to_date()
等价于
str_to_date()
,而
nls_date_语言
对应于系统变量

然而,正如(我的重点是):

此变量影响
DATE\u FORMAT()
DAYNAME()
MONTHNAME()
函数的输出

lc\u-time\u-names
不影响
STR\u-TO\u-DATE()
GET\u-FORMAT()
函数

因此,您无法实际解析
dd mon yyyy
格式的日期,其中
mon
是非英语月份,仅使用内置函数和系统变量

我能想到的唯一解决方案是在解析之前手动翻译日期缩写,使用大量嵌套的
REPLACE()
s或
CASE
表达式。。。一些月份名称在法语和英语之间确实匹配,这一事实稍微简化了任务:

select str_to_date(
    case 
        when mystr like '%FEV%' then replace(mystr, 'FEV', 'FEB')
        when mystr like '%AVR%' then replace(mystr, 'AVR', 'APR'),
        when mystr like '%MAI%' then replace(mystr, 'MAI', 'MAY')
        when mystr like '%JUI%' then replace(mystr, 'JUI', 'JUL'),
        when mystr like '%AOU%' then replace(mystr, 'AOU', 'AUG')
    end,
    '%d-%b-%Y'
) mydate
from ...