Oracle SQL 查询数据表 时间段数据 日期格式参数含义说明

本文详细介绍了在Oracle数据库中如何判断时间字段的范围、查询特定时间范围内的数据,以及进行日期时间操作、ROUND函数使用、处理毫秒级数据和计算程序运行时间的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、判断时间字段是否在指定时间段内:
where addtime >= to_date(‘2010-1-1’ ,‘YYYY-MM-DD’)
and addtime < to_date(‘2019-1-1’ ,‘YYYY-MM-DD’)
2、查询10天之内的数据:
select * from tablename where datatime>= (sysdate -10);
3、查询一小时内的数据:
select * from tablename where datatime>= (sysdate -1/24);
4、以此类推,如果是分钟为:sysdate-1/24/60 ,秒数为:sysdate-1/24/60/60
oracle中的to_date参数含义
1.日期格式参数含义说明
D 一周中的星期几

DAY 天的名字,使用空格填充到9个字符

DD 月中的第几天

DDD 年中的第几天

DY 天的简写名

IW ISO标准的年中的第几周

IYYY ISO标准的四位年份

YYYY 四位年份

YYY,YY,Y 年份的最后三位,两位,一位

HH 小时,按12小时计

HH24 小时,按24小时计

MI 分

SS 秒

MM 月

Mon 月份的简写

Month 月份的全名

W 该月的第几个星期

WW 年中的第几个星期 1.日期时间间隔操作

当前时间减去7分钟的时间
  select sysdate,sysdate - interval ’7’ MINUTE from dual
  
  当前时间减去7小时的时间
  select sysdate - interval ’7’ hour from dual
  
  当前时间减去7天的时间
  select sysdate - interval ’7’ day from dual
  
  当前时间减去7月的时间
  select sysdate,sysdate - interval ’7’ month from dual
  
  当前时间减去7年的时间
  select sysdate,sysdate - interval ’7’ year from dual
  
  时间间隔乘以一个数字
  select sysdate,sysdate - 8 *interval ’2’ hour from dual

2.日期到字符操作
  select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual
  select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from dual
  select sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from dual
  select sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from dual

字符到日期操作
  select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual
  具体用法和上面的to_char差不多。
  
trunk/ ROUND函数的使用
  select trunc(sysdate ,’YEAR’) from dual
  select trunc(sysdate ) from dual
  select to_char(trunc(sysdate ,’YYYY’),’YYYY’) from dual
  
5.oracle有毫秒级的数据类型
  —返回当前时间 年月日小时分秒毫秒
  select to_char(current_timestamp(5),’DD-MON-YYYY HH24:MI:SSxFF’) from dual;
  —返回当前时间的秒毫秒,可以指定秒后面的精度(最大=9)
  select to_char(current_timestamp(9),’MI:SSxFF’) from dual;
  
6.计算程序运行的时间(ms)
  declare
  type rc is ref cursor;
  l_rc rc;
  l_dummy all_objects.object_name%type;
  l_start number default dbms_utility.get_time;
  begin
  for I in 1 … 1000
  loop
  open l_rc for
  ’select object_name from all_objects ’||
  ’where object_id = ’ || i;
  fetch l_rc into l_dummy;
  close l_rc;
  end loop;
  dbms_output.put_line
  ( round( (dbms_utility.get_time-l_start)/100, 2 ) ||
  ’ seconds…’ );
  end;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最爱で毛毛熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值