将字符串从mm/dd/yyyy转换为yyyymmdd



我的日期列以char和yyyymmdd格式存储。我必须从此列中搜索的字符串为mm/dd/yyyy格式。我该如何将其更改为yyyymmdd。另外,如果我的参数已将其传递到查询,则我不包括DOB搜索在where子句

select * 
from ona 
  left join mnv on ona.xyz = mnv.xyz 
where (coalesce(to_date(mnv.DOB,'YYYYMMDD'),to_date('1901-01-01','YYYY-MM-DD')) OR '{BirthDate}' IS NULL)

不建议将日期存储为字符串,这主要是由于此特定原因。因此,如果可能的话,请尝试更改列数据类型以避免这种情况。

目前,您可以通过将两个字符串与 to_date函数转换为

来对其进行比较。
select something from some_table where
to_date(date_Column,'YYYYMMDD')=to_date(search_value,'MM/DD/YYYY');

正如您在评论中所要求的那样,也可以通过操纵字符串来做到这一点,但是我认为与日期进行比较会更快,不太容易出现不准确。

查看查询后进行更新。

您没有将BirthDate转换为迄今为止,而且查询中没有=可以比较。假设出生日期是带有MM/DD/YYYY格式的字符串,请使用以下类似。

select * from ona left join mnv on ona.xyz = mnv.xyz 
where
to_date(mnv.DOB,'YYYYMMDD') = to_date(BirthDate,'MM/DD/YYYY')
and mnv.DOB is not null 
and BirthDate is not null. 

相关内容

  • 没有找到相关文章

最新更新