我有两列,它们都存储为'MM/DD/YYYYY HH:MM:SS AM (or 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
有什么需要帮忙的吗?
发布于 2017-03-18 01:51:45
将日期存储为字符串是没有意义的。但你确实在这么做。
因为您有字符串,所以不需要转换为日期。这样做如何:
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
。
https://stackoverflow.com/questions/42869571
复制