我在一个表中建立了2个日期字段,分别是开始日和结束日,日期格式是yy-mm-dd,如开始日2006-05-31 结束日2007-01-01
我要得到这2个字段间的月份,只要每个月有一天就算一个月,如上面说的 会有5月,6月,7月8月9月10月11月12月和1月共9个月
怎样写sql语句查询能得出9个月来?主要是不知道用什么办法求出来,请各位帮忙!谢谢
我要得到这2个字段间的月份,只要每个月有一天就算一个月,如上面说的 会有5月,6月,7月8月9月10月11月12月和1月共9个月
怎样写sql语句查询能得出9个月来?主要是不知道用什么办法求出来,请各位帮忙!谢谢
解决方案 »
- Oracle连接java软件(iReport报表软件)后,在同一张表同时获取大一大二大三的总人数、男生数、女生数,如何解决?求大神!
- 请教 获取当前用户可以操作的数据库名称列表?
- oracle数据泵导出数据
- ORA-00905:"T"."POLICYNUM":invalid identifier
- 菜鸟问题--year,month 作为字段名称,如何强制引用
- 问一个数字和字符串比较的问题
- 请大侠们帮我改改这个简单的存储过程
- 利用sqlplus查询语句?
- 服务器限制端口了,只有80,1521开放,程序可以连接到ORALCE,但是我PL/DEV,却连接不了ORALCE,提示没有监听器。
- 100分!!ORA-12154: TNS: 无法处理服务名client:winxp+sp1;server:IBM小型机 AIX 4
- oracle 两个表查询的问题,请教高手,在线等,立马给分
- 表连接的问题
(to_number(to_char(t_user.abolished_ts,'yyyy'))-to_number(to_char(t_user.created_ts,'yyyy')))*12+(to_number(to_char(t_user.abolished_ts,'mm'))-to_number(to_char(t_user.created_ts,'mm')))+1 as mon我是这样写的
如果是同一个年份的就不行了。
试下:
SQL> select * from rqcs
2 /
RQ1 RQ2
----------- -----------
2007-11-1 2007-12-1
SQL>
SQL> Select
2 (to_number(to_char(rq1,'yyyy'))-to_number(to_char(rq2,'yyyy')))*12
3 +(to_number(to_char(rq1,'mm'))- to_number(to_char(rq2,'mm')))+1
4 From rqcs;
(TO_NUMBER(TO_CHAR(RQ1,'YYYY')
------------------------------
0
SQL>
还要加个年份的判断啊,修改测试了下,可以来:
SQL> Select * From rqcs;
RQ1 RQ2
----------- -----------
2007-11-1 2007-12-1
2006-11-1 2007-11-1
SQL> Select Rq1,
2 Rq2,
3 (Case
4 When To_Char(Rq1, 'yyyy') = To_Char(Rq2, 'yyyy') Then
5 Abs(Months_Between(Rq1, Rq2))
6 Else
7 Abs(To_Number(To_Char(Rq1, 'yyyy')) -
8 To_Number(To_Char(Rq2, 'yyyy'))) * 12 +
9 (To_Number(To_Char(Rq1, 'mm')) - To_Number(To_Char(Rq2, 'mm')) + 1)
10 End) As Mon
11 From Rqcs;
RQ1 RQ2 MON
----------- ----------- ----------
2007-11-1 2007-12-1 1
2006-11-1 2007-11-1 13
SQL>