题目: 输入4个值[2008,12,2009,2], 要求一段SQL, 不另创新表, 得到如下结果:
12 2008-12-1 2008-12-31
01 2009-1-1 2009-1-31
02 2009-2-1 2009-2-28
条件: 起始年, 起始月, 截至年, 截至月
结果: 月份, 月的第一天, 月的最后一天
解答:
Sql代码
select to_char(tt.d, "mm"), tt.d, last_day(tt.d)
from (select ADD_MONTHS(zz.s, rownum - 1) d
from (select to_date("2008" || "12" || "01", "yyyymmdd") s,
to_date("2009" || "02" || "01", "yyyymmdd") e
from dual) zz,
(select * from user_objects)
where rownum <= MONTHS_BETWEEN(zz.e, zz.s) + 1) tt
select to_char(tt.d, "mm"), tt.d, last_day(tt.d)
from (select ADD_MONTHS(zz.s, rownum - 1) d
from (select to_date("2008" || "12" || "01", "yyyymmdd") s,
to_date("2009" || "02" || "01", "yyyymmdd") e
from dual) zz,
(select * from user_objects)
where rownum <= MONTHS_BETWEEN(zz.e, zz.s) + 1) tt
分析: 这个题目比较难, 因为考察了很多的Oracle特有的函数,表(视图).
rownum 行号
ADD_MONTHS 日期函数,给一个日期加一个月数,得到这个月数后的日期
to_date 日期函数, 将一个字符以一定格式转成日期
to_char 字符函数, 以一定格式得到字符
last_day 日期函数, 得到某日所在月的最后一天
MONTHS_BETWEEN 日期函数, 得到两个日期间隔的月数
user_objects 是Oracle提供的视图
分享到:
相关推荐
sql面试题,oracle面试题目,sql面试题\oracle面试题目
oracle经典面试题目及答案,面试必备。
oracle经典的50道面试题目。oracle经典的50道面试题目。oracle经典的50道面试题目。oracle经典的50道面试题目。祝大家好运!
从oracle数据库取出日期。 按格式显示
Oracle面试题目及解答 轻松应对面试官
oracle 笔试面试题目
极详细oracle数据库面试题目汇总,按照这个思路去复习就可以了
Oracle面试题目
oracle数据库面试题目汇总.pdf
oracle数据库面试题目集锦,非常不错
oracle格式化输出oracle格式化输出oracle格式化输出
一份来自武汉英思工程科技有限公司的ORACLE面试测试题目,附答案
oracle求职dba职位面试题目,oracle求职dba职位面试题目
oracle设置日期格式
个人收集的oracle面试题目.pdf
最新的oracle dba 面试题目及答案。
常见的ORacle数据库的题目,题目是从网上找到的,给出答案了,都是自己写的,如果有问题请联系我
权限相同的两个oracle用户,其中一个用户导入的数据,另一个用户登录后看不到导入的数据,为什么? 怎么更改mysql的root密码(至少使用两种方法) mysql有哪些引擎,列出并说明之间的差异 mysql如何实现mysql多机...
个人收集的oracle面试题目,有的没有吧.
Oracle_日期型数据格式 日期型数据格式强制转换