要制作报表打印某年某月的数据,例如前台传入‘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
and
t.
time
<=last_day(SYSDATE)