比较SQL Oracle

时间:2017-03-18 01:49:02

标签: sql oracle to-char

我有两列,它们都存储为'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

请帮忙吗?

1 个答案:

答案 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