比较 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
.
我有两列都存储为 '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
.