oracle查询语句:我要查询某一月份的所有记录,这个月份是从前台页面输入的,问这个oracle语句怎么写

oracle查询语句:我要查询某一月份的所有记录,这个月份是从前台页面输入的,问这个oracle语句怎么写,第1张

假设前台输入月份字符串是p_month: 2012-05

select from test1 where to_char(col,'yyyy-mm')=p_month

或者

select from test1 where trunc(col) =to_date(p_month||'01','yyyy-mm-dd)

DECLARE

  V_MONTH      NUMBER;

  V_TEMP_DATE  DATE;

  V_BEGIN_DATE DATE;

BEGIN

  V_MONTH      := 7;--以7月为例

  V_BEGIN_DATE := TO_DATE('2017-' || V_MONTH || '-01', 'yyyy-mm-dd');

  V_TEMP_DATE  := V_BEGIN_DATE;

  LOOP

    EXIT WHEN V_TEMP_DATE > LAST_DAY(V_BEGIN_DATE);

    DBMS_OUTPUTPUT_LINE(TO_CHAR(V_TEMP_DATE, 'yyyy-mm-dd'));

    V_TEMP_DATE := V_TEMP_DATE + 1;

  END LOOP;

END;

楼上的只统计了一个月的吧

WITH t AS

     (SELECT     ROWNUM

            FROM DUAL

      CONNECT BY ROWNUM <= 12)

SELECT    TO_CHAR (LAST_DAY (TO_DATE (   TO_CHAR (SYSDATE, 'YYYY')

                                      || LPAD (TO_CHAR (ROWNUM), 2, 0),

                                      'YYYYMM'

                                     )

                            ),

                   'YYYY-MM'

                  )

       || '月',

          TO_CHAR (LAST_DAY (TO_DATE (   TO_CHAR (SYSDATE, 'YYYY')

                                      || LPAD (TO_CHAR (ROWNUM), 2, 0),

                                      'YYYYMM'

                                     )

                            ),

                   'DD'

                  )

       || '天'

  FROM t

直接全选复制粘贴运行

没有这样的函数,不过可以采用 MONTHS_BETWEEN 得到相差几个月,然后根据第一个月的月份,依次累加就行了。

SELECT DATE1, DATE2, CEIL(MONTHS_BETWEEN(DATE1, DATE2))

FROM (SELECT TRUNC(SYSDATE) DATE1, TRUNC(SYSDATE) - 200 DATE2 FROM DUAL)

1、创建测试表,

create table test_date_2(id int, v_date date);

2、插入测试数据

insert into test_date_2 values(1,sysdate);

insert into test_date_2 values(2,sysdate-20);

insert into test_date_2 values(3,sysdate-30);

insert into test_date_2 values(4,sysdate-40);

commit;

3、查询表中全量数据,select t from test_date_2 t;

4、编写语句,查询当月份的上一个月;

 select t, add_months(v_date,-1) v_date2 from test_date_2 t;

不知道你的时间和参数time分别是什么类型的,只能暂时考虑为vchar型的。

select

to_char(时间,'yyyy-mm') as 每月时间

, sum(统计数据)

from 测试表

where substr(to_char(to_date('2011/7','YYYY/MM'),'YYYY/MM/DD'),0,4) = substr(to_char(to_timestamp('2011/7/1 18:42:43','YYYY/MM/DD hh24:mi:ss'),'YYYY/MM/DD hh24:mi:ss'),0,4)

group by to_char(时间,'yyyy-mm')

-----下面的这个假设时间是date型的,参数time是timestamp型

select

to_char(时间,'yyyy-mm') as 每月时间

, sum(统计数据)

from 测试表

where substr(to_char(时间,'yyyy-mm'),0,4) = substr(to_char(time,'YYYY/MM/DD hh24:mi:ss'),0,4)

group by to_char(时间,'yyyy-mm')

以上就是关于oracle查询语句:我要查询某一月份的所有记录,这个月份是从前台页面输入的,问这个oracle语句怎么写全部的内容,包括:oracle查询语句:我要查询某一月份的所有记录,这个月份是从前台页面输入的,问这个oracle语句怎么写、oracle中取根据所传的月份,把每个月所有天数的数据显示出来。、oracle数据库中怎么查询当前年每月的天数,按自然月统计,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9450029.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存