比较 SQL Oracle 中的两个日期列

Compare two date columns in SQL Oracle

我有两列都存储为 'MM/DD/YYYYY HH:MM:SS AM (or PM)'。我可以使用 'TO_CHAR' 将其更改为 'MM/DD/YYYY' 格式,但在我得到它之后,我只想要两列彼此不相等的日期(在 TO_CHAR ).我使用了 '!=' 但这不起作用,并且当两个日期彼此相等时它仍然是 returns 行。我基本上希望这些字段忽略时间,并且如果两个日期不同则只 return 该行。

这是我尝试的查询 运行:

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

有什么帮助吗?

将日期存储为字符串没有意义。但你就是这么做的。

因为你有字符串,所以不需要转换为日期。怎么样:

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.