关于oracle的时间查询

本文详细介绍在Oracle数据库中如何使用to_char和to_date函数精确查询指定日期和时间的数据,包括按日期、小时及时间戳范围查询的方法。

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

在Oracle中,查询一张表时要求查询某一时间点的数据
在这里插入图片描述

要求

select * from 表名 where DATE_TRAVEL=某一日期 (时间不进行比较,日期相等就可以了)
解决办法:

比如某日期为2014-01-01

select * from 表名 where to_char(DATE_TRAVEL,'yyyy-mm-dd')='2014-01-01'

具体到某一小时,比如2014年1月1日的凌晨两点 2014-01-01 02

select * from 表名 where to_char(DATE_TRAVEL,'yyyy-mm-dd HH')='2014-01-01 02'

数据库时间类型为timstamp,按照时间进行数据查询

select * from table1 
where 
TS between TO_DATA(2017-7-25 16:30:00,’yyyy-mm-dd h24:mi:ss’) 
and TO_DATA(2017-7-25 19:30:00,’yyyy-mm-dd h24:mi:ss’

知识拓展:

(转载内容地址:https://blog.youkuaiyun.com/qq_33223299/article/details/80597412)

oracle中对时间的操作以及to_char和to_date用法总结
Oracle时间处理有时候to_char和to_date两个比较关键的函数,在此总结一下:
一、获取系统当前时间

    select sysdate from dual;

二、 to_char的用法

select to_char(sysdate,'yyyy.mm.dd') from dual
select to_char(sysdate,'yyyy-mm-dd') from dual
select to_char(sysdate,'yyyy mm dd') from dual
select to_char(sysdate,'yyyy*mm*dd') from dual
select to_char(sysdate,'yyyymmdd') from dual

只要被转换的是一个日期,yyyy,mm,dd中间加不加连接符,加什么连接符都可以。我们可以把空格理解为一个空的连接符。
看一个连接符星号的截图:
在这里插入图片描述

日期和字符转换函数用法(to_date,to_char)
   select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串   
   select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年   
   select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月   
   select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日   
   select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时   
   select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分   
   select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒
   
       
   select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual//

三、 to_date的用法

to_date的要求就稍微多了一点。
①、带连接符


select to_date('2012.07.26','yyyy-mm-dd') from dual

select to_date('2012.07.26','yyyy.mm.dd') from dual

select to_date('2012.07.26','yyyy mm dd') from dual

select to_date('2012-07-26','yyyy-mm-dd') from dual

select to_date('2012-07-26','yyyy.mm.dd') from dual

select to_date('2012-07-26','yyyy mm dd') from dual

select to_date('2012.7.1','yyyy-mm-dd') from dual

select to_date('2012.7.1','yyyy.mm.dd') from dual

select to_date('2012.7.1','yyyy mm dd') from dual

所谓带连接符,就是我们to_date的第一个参数的yyyy,mm,dd之间有没有连接符。如果有,那么第二个参数必须有连接符,随便是什么连接符。而且mm,dd不一定要对应位数。07可以对应mm,7同样可以对应mm。我们可以把空格理解为一个空的连接符。
②、不带连接符

select to_date('20120726','yyyymmdd') from dual

select to_date('20120726','yyyy.mm.dd') from dual

select to_date('20120726','yyyy-mm-dd') from dual

不带连接符的必须一一位数对应,第二个字符串带不带连接符均可。07可以匹配mm,但7就不可以匹配mm

③、
①②中情况查出的结果都是带’-'的,无论有无连接符,连接符是什么。看截图:
在这里插入图片描述

select to_char(sysdate,'yyyy.mm.dd hh24 mi ss') from dual

在这里插入图片描述

select to_date('2012.7.1 21:09:09','yyyy-mm-dd hh24 mi ss') from dual

截图:
在这里插入图片描述
除了时间的显示有些区别,其余的和上述所说原则一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值