如何用Slect语句在Oracle数据库中查出具体某个月(年)的数据

如何用Slect语句在Oracle数据库中查出具体某个月(年)的数据,第1张

1、通常情况下,Like主要用在字符类型的查询中,不会用在日期类型中。即使要用在日期类型中,也是先转换成字符型再用like。用不用like关键看你的查询需求。

2、一般情况下,查询月份都带上年份,不然搞不清是哪一年的。

3、为了查询效率,一般尽可能左边直接用字段。

所以:

select

from

[表名]

where

[字段名]

between

to_date('20080801','yyyymmdd')

and

to_date('20080831','yyyymmdd')

要比

select

from

[表名]

where

to_char([字段名],'yyyymm')

=

'200808'

--

或者:to_char([字段名],'yyyymmdd')

like

'200808%'

效率高很多。

如果字符串只有开头有零,而字符串中间没有0,那么可以使用replace(字符串,'0','')

如果0开头最长的位数不长,那么可以逐个判断。

比如我可能知道这里面最长的就是连续5个0开头的,这样我就判断如果遇到5个0开头的就截掉前五位,4个0开头截掉前四位,3个0开头截掉前三位,一直到1,逐个判断使用case when可以完成但是如果最长的0开头个数不确定,就比较麻烦了。

1日期和字符转换函数用法(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//

2 select to_char( to_date(222,'J'),'Jsp') from dual

显示Two Hundred Twenty-Two

3 求某天是星期几

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;

星期一

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;

monday

设置日期语言

ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';

也可以这样

TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')

4 两个日期间的天数

select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;

5 时间为null的用法

select id, active_date from table1

UNION

select 1, TO_DATE(null) from dual;

注意要用TO_DATE(null)

6月份差

a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')

那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。

所以,当时间需要精确的时候,to_char还是必要的

在Oracle中,要获得日期中的年份,例如把sysdate中的年份取出来,并不是一件难事。常用的方法是:Select to_number(to_char(sysdate,'yyyy')) from dual,而实际上,oracle本身有更好的方法,那就是使用Extract函数,使用方法是:Select Extract(year from sysdate) from dual,这种方法省掉了类型转换,看上去更加简洁。相应的,要取得月份或日,可以用select extract (month from sysdate) from dual和select extract (day from sysdate) from dual。此方法获得的结果,是数值型的,你可以设置一个方法测试一下。

以上就是关于如何用Slect语句在Oracle数据库中查出具体某个月(年)的数据全部的内容,包括:如何用Slect语句在Oracle数据库中查出具体某个月(年)的数据、oracle如何获取当前月份,去掉前面的0、select to_char(sysdate, 'MM' ) from dual 来获取月份等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10127998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存