我有两列,它们都存储为'MM / DD / YYYYY HH:MM:SS AM(或PM)'。我可以使用'TO_CHAR'将其更改为'MM / DD / YYYY'格式,但在我得到之后,我只想要两列彼此不相等的日期(在TO_CHAR之后)。我使用'!='但这不起作用,当两个日期彼此相等时它仍会返回行。我基本上希望字段忽略时间,并且只在两个日期不同时返回行。
以下是我试图运行的查询:
select r.project_name, to_char(r.created_on, 'MM/DD/YYYY'),
to_char(r.project_opened_on_date, 'MM/DD/YYYY')
from wh_project_repo r
where r.created_on != r.project_opened_on_date
请帮忙吗?
答案 0 :(得分:3)
将日期存储为字符串是没有意义的。但你这样做。
因为您有字符串,所以无需转换为日期。怎么样:
select r.project_name, to_char(r.created_on, 'MM/DD/YYYY'),
to_char(r.project_opened_on_date, 'MM/DD/YYYY')
from wh_project_repo r
where substr(r.created_on, 10) <> substr(r.project_opened_on_date, 10)
但是,查询的问题在于操作位于select
。这不会影响where
子句的比较。
编辑:
你可以通过执行以下操作来比较这些值:
where to_char(r.created_on, 'MM/DD/YYYY') <> to_char(r.project_opened_on_date, 'MM/DD/YYYY')
问题不在于字符串比较。问题是select
中的功能不会影响where
。