当一个人有时间时如何比较相等的日期
How compare dates that are equal when one has time as well
我正在尝试比较日期,看起来我正在像在线示例那样进行比较,但是当我执行 >= 进行比较时,我只看到 returned 的日期行。当我只使用 = 它没有 return 任何东西。
这是我使用 >= 进行日期比较的查询:
select *
from valhist_tbl --dmh
where
CRTUPDDT >= to_date('28-10-21','DD-MM-YY')
and metricvalue <> 'Device Found'
order by CRTUPDDT asc
我看到很多这样的事情 returned:
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')
但这没有 return 任何行。
我认为比较等于和不大于与 returned 的内容有关,但我不确定如何解决它。另外,我不想看到重复的行 returned,但是有太多 distinct 让它永远消失。
这是 link 我在看:
比较一整天的范围:
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)
上有一个基于函数的索引。
我正在尝试比较日期,看起来我正在像在线示例那样进行比较,但是当我执行 >= 进行比较时,我只看到 returned 的日期行。当我只使用 = 它没有 return 任何东西。
这是我使用 >= 进行日期比较的查询:
select *
from valhist_tbl --dmh
where
CRTUPDDT >= to_date('28-10-21','DD-MM-YY')
and metricvalue <> 'Device Found'
order by CRTUPDDT asc
我看到很多这样的事情 returned:
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') 但这没有 return 任何行。
我认为比较等于和不大于与 returned 的内容有关,但我不确定如何解决它。另外,我不想看到重复的行 returned,但是有太多 distinct 让它永远消失。
这是 link 我在看:
比较一整天的范围:
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)
上有一个基于函数的索引。