首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较SQL Oracle中的两个日期列

比较SQL Oracle中的两个日期列
EN

Stack Overflow用户
提问于 2017-03-18 01:49:02
回答 1查看 10.5K关注 0票数 1

我有两列,它们都存储为'MM/DD/YYYYY HH:MM:SS AM (or PM)‘。我可以使用'TO_CHAR‘将其更改为'MM/DD/YYYY’格式,但在获得该格式之后,我只需要两列不相等的日期(在TO_CHAR之后)。我使用了'!=‘,但这不起作用,当两个日期都相等时,它仍然返回行。我基本上希望字段忽略时间,并且仅在两个日期不同时才返回行。

以下是我试图运行的查询:

代码语言:javascript
运行
AI代码解释
复制
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

有什么需要帮忙的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-18 01:51:45

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

因为您有字符串,所以不需要转换为日期。这样做如何:

代码语言:javascript
运行
AI代码解释
复制
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子句所比较的内容。

编辑:

您还可以通过执行以下操作将值作为日期进行比较:

代码语言:javascript
运行
AI代码解释
复制
where to_char(r.created_on, 'MM/DD/YYYY') <> to_char(r.project_opened_on_date, 'MM/DD/YYYY')

问题不在于字符串比较。问题是select中的函数不会影响where

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42869571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档