oracle取出某个月的所有数据

前端之家收集整理的这篇文章主要介绍了oracle取出某个月的所有数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

要制作报表打印某年某月的数据,例如前台传入‘2013-06’这样的字符串,我怎么才能从oracle数据库中取出2013年06月的所有记录呢?求sql,求大神指点!


1、查询确定年月的数据,使用to_date或to_char都可以实现

SELECT * FROM 表名
WHERE TO_CHAR(日期列, 'YYYY-MM' )=TO_CHAR( '2013-06' , 'YYYY-MM' )或者
SELECT * FROM 表名
WHERE 日期列=TO_Date( '2013-06' , 'YYYY-MM' )

2、查询前一个月

select concat(to_char(sysdate, 'yyyy' )||to_char(add_months(sysdate,-1), '-MM-' ), '0100:00:00' )start_time,
concat(to_char(sysdate, '-MM-' )||to_char(LAST_DAY(sysdate), 'dd' ), '23:59:59' )end_time from dual

3、查询前一天

select to_char(sysdate-1, 'yyyy-mm-dd' )|| '00:00:00' start_time,to_char(sysdate-1, 'yyyy-mm-dd' )|| '23:59:59' end_time from dual



Oracle查询数据:查询当月的数据?

Oracle查询数据:查询当月的数据:表中存的是:2013-08-05、2013-08-11、2013-09-11,如果查询当月的应该怎么查,我用 select * from t_table t where t.time<= SYSDATE 只能查询出2013-08-05,应该怎么才能查询出当月的全部数据呢?
我有更好的答案
推荐于2016-04-30 07:56:59 最佳答案

需要看日期字段存储的是字符还是日期类型的数据,方法略有不同

如果存储的是字符型(如2015-09-01类型的数据)字段,可用以下语句:

select * from 表名 where to_char(sysdate, 'yyyy-mm' )=substr(日期字段,1,7);

如果存储的是日期型字段,可用以下语句:

select * from 表名 where to_char(sysdate, 'yyyy-mm' )=to_char(日期字段, 'yyyy-mm' );

所用函数说明:

to_char在语句中是将日期转为字符的函数,格式则为函数中设定的'yyyy-mm'格式。

sysdate代表当前日期时间,是日期型数据。

substr是截取函数,第一个参数为要截图的字段,第二个参数为截取的起始位,第三个参数代表截取的长度。

或者: ================================================================
SELECT * FROM TABLE
WHERE TO_CHAR(INSERT_DATE, 'YYYY-MM' )=TO_CHAR( '2013-06' , 'YYYY-MM' )

select
* from t_tablet
where t. time >=TRUNC(SYSDATE, 'MM' )
and t. time <=last_day(SYSDATE)
原文链接:https://www.f2er.com/oracle/206012.html

猜你在找的Oracle相关文章