首页 > 解决方案 > PLSQL 中的时间戳过滤器

问题描述

假设我有一个表,其中包含用户对 IMDB 电影数据库等电影的评分。

ID USER_REVIEW 用户评分 用户身份
1 蓝光 10 1
2 斑点 9 2
3 废话 7 3

这些表格插入是昨天拍摄的。id 为 1 和 2 的条目是在 16:00 到 16:10 之间拍摄的。id 为 3 的第三个条目是在 16:10 到 16:15 之间获取的 如何找到一个 select 语句来过滤我在 16:00 到 16:10 之间的前两个条目?或者是否有可能找出昨天插入的确切时间戳?

标签: sqloracleplsqloracle-sqldeveloper

解决方案


是否可以找到昨天插入的确切时间戳?

当然,如果表中有时间戳列。


看起来好像这样的列不存在,添加它的简单选项是

alter table movies add date_insert date default sysdate;

Oracle 将自动填充该列SYSDATE(除非您明确插入它),这意味着您当前的INSERT语句保持“原样”,您不必稍微更改它。

然后你会 - 例如 - 选择昨天插入的行

select *
from movies
where trunc(date_insert) = trunc(sysdate - 1)

或者,如您所问,昨天(2021 年 8 月 10 日)16:00 到 16:10 之间插入的行:

select * 
from movies
where date_insert between to_date('10.08.2021 16:00', 'dd.mm.yyyy hh24:mi')
                      and to_date('10.08.2021 16:10', 'dd.mm.yyyy hh24:mi')

推荐阅读