我的日期列以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.