当一个人也有时间时如何比较相等的日期
Posted
技术标签:
【中文标题】当一个人也有时间时如何比较相等的日期【英文标题】:How compare dates that are equal when one has time as well 【发布时间】:2021-11-17 20:15:57 【问题描述】:我正在尝试比较日期,看起来我正在像在线示例一样进行操作,但我只看到当我 >= 进行比较时返回的日期行。当我只使用 = 时,它不会返回任何内容。
这是我使用 >= 进行日期比较的查询:
select *
from valhist_tbl --dmh
where
CRTUPDDT >= to_date('28-10-21','DD-MM-YY')
and metricvalue <> 'Device Found'
order by CRTUPDDT asc
我看到很多这样的东西返回:
CRTUPDDT METRICVALUE
28-OCT-21 12.00.00.069000000 AM NOT FOUND
28-OCT-21 12.00.00.071000000 AM NOT FOUND
...
我希望它这样做:CRTUPDDT = to_date('28-10-21','DD-MM-YY') 但这不会返回任何行。
我认为比较等于而不大于与返回的内容有关,但我不确定如何解决它。另外,我不希望看到返回的重复行,但是有太多的 distinct 让它永远消失。
这是我正在查看的链接:date
【问题讨论】:
尝试在该列上使用trunc
,这样它将排除日期的时间部分。喜欢trunc(CRTUPDDT)
这能回答你的问题吗? Comparing with date in Oracle sql
【参考方案1】:
比较一整天的范围:
SELECT *
FROM valhist_tbl --dmh
WHERE CRTUPDDT >= DATE '2021-10-28'
AND CRTUPDDT < DATE '2021-10-28' + INTERVAL '1' DAY
AND metricvalue <> 'Device Found'
ORDER BY CRTUPDDT asc
您也可以使用TRUNC
进行比较:
SELECT *
FROM valhist_tbl --dmh
WHERE TRUNC(CRTUPDDT) = DATE '2021-10-28'
AND metricvalue <> 'Device Found'
ORDER BY CRTUPDDT asc
但是,如果您在CRTUPDDT
上有一个索引,那么它不会在后面的查询中使用;您需要在 TRUNC(CRTUPDDT)
上建立一个基于函数的索引。
【讨论】:
我喜欢你和其他人提出的 trunc 想法。谢谢!以上是关于当一个人也有时间时如何比较相等的日期的主要内容,如果未能解决你的问题,请参考以下文章
当一个人点击网页上的返回按钮时,Riverpod 给出一个糟糕的状态异常
当一个人创建一个新模型时,应该在哪里放置代码以在 Google App Engine/Django 上自动增加一个分片计数器?
(用JAVA实现)请使用日期相关的api,控制台输入出生日期,计算出一个人出生了多少年?