to_char用法:数据库跨时间段检索——几点到几点之间的数据,不管日期,比如说1月份每天下午2点到3点

oracle数据库中,使用plsql执行查询,默认查询时间区间的语句为:

select fzrq
from dj_djb
where FZRQ >= TO_DATE('2019-01-01 00:00:00','YYYY-MM-DD hh24:mi:ss')
AND FZRQ <= TO_DATE('2019-02-28 23:59:59','YYYY-MM-DD hh24:mi:ss')

执行结果示例:
to_char用法:数据库跨时间段检索——几点到几点之间的数据,不管日期,比如说1月份每天下午2点到3点_第1张图片

但是我需要查询19年1月份每天下午2点到3点的记录,该如何查询:

select fzrq,to_char(fzrq,'hh24')
from dj_djb
where FZRQ >= TO_DATE('2019-01-01 00:00:00','YYYY-MM-DD hh24:mi:ss')
AND FZRQ <= TO_DATE('2019-02-28 23:59:59','YYYY-MM-DD hh24:mi:ss')
AND to_char(fzrq,'hh24')  Between 14 And 15

to_char用法:数据库跨时间段检索——几点到几点之间的数据,不管日期,比如说1月份每天下午2点到3点_第2张图片

对比一下,是否就实现了目的呢?

这里的重点是使用 to_char(fzrq,'hh24'),很多用户百度到的都是datepart(mm,getdate())函数,但是在oracle中会报:ORA-00904:"DATEPART":标示符无效的错。

 * to_char()函数可以取到时期中的各个部分
 *如日期:2006-07--02 18:15:36.513
 * yy:取年           2006
 * mm:取月           7
 * dd:取月中的天     2
 * dy:取年中的天     183
 * wk:取年中的周     27
 * dw:取周中的天     1
 * qq:取年中的季度   3
 * hh:取小时        18
 * mi:取分钟        15
 * ss:取秒          36

其中,hh24表示按照24制取,如果不加,就是导致13点取值为1点,例:

select fzrq,to_char(fzrq,'hh'),to_char(fzrq,'hh24')
from dj_djb
where FZRQ >= TO_DATE('2019-01-01 00:00:00','YYYY-MM-DD hh24:mi:ss')
AND FZRQ <= TO_DATE('2019-02-28 23:59:59','YYYY-MM-DD hh24:mi:ss')
AND to_char(fzrq,'hh24')  Between 13 And 22

to_char用法:数据库跨时间段检索——几点到几点之间的数据,不管日期,比如说1月份每天下午2点到3点_第3张图片

oracle相关问题可加群:780853346,非大神,重在交流学习。

你可能感兴趣的:(oracle)