Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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
Sql 如何将非标准字符串格式化为日期格式_Sql_Oracle - Fatal编程技术网

Sql 如何将非标准字符串格式化为日期格式

Sql 如何将非标准字符串格式化为日期格式,sql,oracle,Sql,Oracle,是否有办法选择字符串“2018年1月3日”和“2017年11月9日”,以便结果均为“MM/DD/YYYY”格式 结果也可以是字符串。您可以使用大小写表达式。假设所有值都采用这两种格式之一,则可以通过执行以下操作将其转换为日期: select (case when col like '%-%-%' then to_date(col, 'MM/DD/YYYY') else to_date(col, 'DD-MON-YY') end) 我更喜欢日期格式的值。

是否有办法选择字符串“2018年1月3日”和“2017年11月9日”,以便结果均为“MM/DD/YYYY”格式


结果也可以是字符串。

您可以使用
大小写
表达式。假设所有值都采用这两种格式之一,则可以通过执行以下操作将其转换为日期:

select (case when col like '%-%-%' then to_date(col, 'MM/DD/YYYY')
             else to_date(col, 'DD-MON-YY')
        end)

我更喜欢日期格式的值。您可以使用
to_char()
转换为您选择的字符串格式。

无需使用正则表达式-像
这样的普通
可以选择日期格式

范例

with my_data as (
select '03/01/2018' dt from dual union all
select '09-NOV-17' from dual)
select 
dt,
case when dt like '__/__/____' then to_date(dt,'dd/mm/yyyy')
when dt like '__-___-__' then  to_date(dt,'dd-mon-rr') 
end as dt_date
from my_data;


我从来没有听说过正则表达式<代码>'%-%-%'
,你能详细解释一下吗?也许你的意思是像“%-%-%”这样的
@WernfriedDomscheit。我真傻。我打算用正则表达式来寻找正确的格式。然后我意识到,
like
也可以,因为对值有两种格式之一的限制。我把它改成了像
DT         DT_DATE            
---------- -------------------
03/01/2018 03.01.2018 00:00:00
09-NOV-17  09.11.2017 00:00:00