oracle 如何查询 当前时间之前的几天 ?

finalsyo 2008-04-09 10:31:49
我想查询 以当前数据库时间(sysdate)为基点, 6天前到3天前的数据 应该怎么写呢?

比如说今天是 08.04.09 , 那么我想查出 08.04.03 - 08.04.05
...全文
4410 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
finalsyo 2008-04-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 doer_ljy 的回复:]
首先假设你的表名叫做tablename,然后又一个字段记录了更新时间。
你要查询更新时间在前六天到前三天的数据。
select * from tablename
where updatedate > sysdate -6 and updatedate < sysdate -3
[/Quote]


谢谢
hebo2005 2008-04-09
  • 打赏
  • 举报
回复
其实最好是这样的between trunc(sysdate)-6 and trunc(sysdate)-4+0.99999
这样就是从6天前的0点到4天前的23:59:59秒
或者这样
>=trunc(sysdate)-6 and <trunc(sysdate)-3

为什么要用trunc(sysdate)呢
因为当前时间一般不会正好是0点,比如当前是11点,-6就是6天前的11 点开始
liulif 2008-04-09
  • 打赏
  • 举报
回复
你只要在Where后加一个条件就可以了啊。
具体是Where 时间字段>=to_date('2008-04-03 00:00:00','yyyy-mm-dd hh24:mi:ss')-6 AND 时间字段<=to_date('2008-04-03 00:00:00','yyyy-mm-dd hh24:mi:ss')-4
别的都一样的,其实Oracle时间格式只要转换一次就行了,跟别的条件一样的。
但是注意一下你的字段是否是日期型
hebo2005 2008-04-09
  • 打赏
  • 举报
回复
between sysdate-6 and sysdate-4
doer_ljy 2008-04-09
  • 打赏
  • 举报
回复
首先假设你的表名叫做tablename,然后又一个字段记录了更新时间。
你要查询更新时间在前六天到前三天的数据。
select * from tablename
where updatedate > sysdate -6 and updatedate < sysdate -3

17,128

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧