第二书店论坛
欢迎光临
第二书店
论坛。
激活帐号
(说明:系统正在将老用户陆续填加到论坛中,如激活失败,请直接登陆!)
首页
搜索
用户列表
FAQ
注册
登录
第二书店论坛
»
技术交流区
»
数据库技术
»
请问一个有关ORACLE的问题?
请问一个有关ORACLE的问题?
帖子发起人:
艾山
发起时间:
2006-03-04 08:40 下午
回复数:
2
楼主
2006-03-04, 08:40 下午
艾山
等级: 士兵
注册: 2006年3月4日
区域: 北京
积分: 13
精华: 0
发贴: 8
请问一个有关ORACLE的问题?
我是Oracle的初学者,碰到一个不会的问题,请大家帮忙分析一下:
STUDENT表中,有BIRTHDAY列,类型为DATE。
问:
1.查询STUDENT表中所有出生日期为各月倒数第三天的纪录;
2.利用BIRTHDAY列,查询STUDENT表中所有年龄大于12岁的纪录。
大家不用替我写出答案,只要告诉我用到什么函数和方法,并简要分析一下就行。
谢谢诸位了!
IP 地址: 已登录 来自: 北京市网通
第 2 楼
2006-03-06, 08:05 下午
艾山
等级: 士兵
注册: 2006年3月4日
区域: 北京
积分: 13
精华: 0
发贴: 8
Re: 请问一个有关ORACLE的问题?
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Jason>
C:\Documents and Settings\Jason>
C:\Documents and Settings\Jason>
C:\Documents and Settings\Jason>sqlplus scott/tiger;
SQL*Plus: Release 9.2.0.1.0 - Production on 星期日 3月 5 17:21:35 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
请输入用户名:
ERROR:
ORA-01017: 无效的用户名/口令;拒绝登录
请输入用户名:
ERROR:
ORA-01017: 无效的用户名/口令;拒绝登录
SP2-0157: 在3次尝试之后无法 CONNECT 到 ORACLE, 退出 SQL*Plus
C:\Documents and Settings\Jason>
C:\Documents and Settings\Jason>
C:\Documents and Settings\Jason>
C:\Documents and Settings\Jason>
C:\Documents and Settings\Jason>
C:\Documents and Settings\Jason>sqlplus scott/tiger
SQL*Plus: Release 9.2.0.1.0 - Production on 星期日 3月 5 17:21:51 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> desc SUN
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
EMPNO NUMBER(4)
EMNAME VARCHAR2(15)
JOB VARCHAR2(15)
MGR VARCHAR2(4)
HIREDATE DATE
SAL NUMBER(5)
COMM NUMBER(5)
DEPTNO NUMBER(5)
SQL> ed
SP2-0107: 无须保存。
SQL> select * from dual;
D
-
X
SQL> ed
已写入文件 afiedt.buf
1* insert into SUN(EMPNO,EMNAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values(1,'Am
y Lee','manager',null,29-3月 -1999,2000,600,10)
SQL> /
insert into SUN(EMPNO,EMNAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values(1,'Amy Lee
','manager',null,29-3月 -1999,2000,600,10)
*
ERROR 位于第 1 行:
ORA-00917: 缺少逗号
SQL> ed
已写入文件 afiedt.buf
1* insert into SUN(EMPNO,EMNAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values(1,'Am
y Lee','manager',null,'29-3月 -1999',2000,600,10)
SQL> /
已创建 1 行。
SQL> select * from SUN;
EMPNO EMNAME JOB MGR HIREDATE SAL COMM
---------- --------------- --------------- ---- ---------- ---------- ----------
DEPTNO
----------
1 Amy Lee manager 29-3月 -99 2000 600
10
SQL> set linesize 100
SQL> set pagesize 100
SQL> select * from SUN;
EMPNO EMNAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- --------------- --------------- ---- ---------- ---------- ---------- ----------
1 Amy Lee manager 29-3月 -99 2000 600 10
SQL> ed
已写入文件 afiedt.buf
1* insert into SUN(EMPNO,EMNAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values(2,'Jim Wolf','clerk',1,'3
0-6月 -2000',1500,800,10)
SQL> /
已创建 1 行。
SQL> insert into SUN(EMPNO,EMNAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values(3,'Jason Kidd','manager',
null,'5-12月 -2000',3000,1000,20);
已创建 1 行。
SQL> insert into SUN(EMPNO,EMNAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values(4,'Cuku Bush','clerk',3,'
22-7月 -2003',800,500,20);
已创建 1 行。
SQL> insert into SUN(EMPNO,EMNAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values(5,'Vasili Graty','clerk',
6,'14-5月 -2001',2100,2000,30);
已创建 1 行。
SQL> insert into SUN(EMPNO,EMNAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values(6,'Tracy Han','manager',n
ull,'9-8月 -2005',3500,3000,30);
已创建 1 行。
SQL> select * from SUN;
EMPNO EMNAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- --------------- --------------- ---- ---------- ---------- ---------- ----------
1 Amy Lee manager 29-3月 -99 2000 600 10
2 Jim Wolf clerk 1 30-6月 -00 1500 800 10
3 Jason Kidd manager 05-12月-00 3000 1000 20
4 Cuku Bush clerk 3 22-7月 -03 800 500 20
5 Vasili Graty clerk 6 14-5月 -01 2100 2000 30
6 Tracy Han manager 09-8月 -05 3500 3000 30
已选择6行。
SQL> select * from SUN where days_between((last_day(HIREDATE)),HIREDATE)=3;
select * from SUN where days_between((last_day(HIREDATE)),HIREDATE)=3
*
ERROR 位于第 1 行:
ORA-00904: "DAYS_BETWEEN": 无效的标识符
SQL> select * from SUN where day_between((last_day(HIREDATE)),HIREDATE)=3;
select * from SUN where day_between((last_day(HIREDATE)),HIREDATE)=3
*
ERROR 位于第 1 行:
ORA-00904: "DAY_BETWEEN": 无效的标识符
SQL> select * from SUN where HIREDATE=add_days((last_day(HIREDATE)),3);
select * from SUN where HIREDATE=add_days((last_day(HIREDATE)),3)
*
ERROR 位于第 1 行:
ORA-00904: "ADD_DAYS": 无效的标识符
SQL> select * from SUN where HIREDATE=add_day((last_day(HIREDATE)),3);
select * from SUN where HIREDATE=add_day((last_day(HIREDATE)),3)
*
ERROR 位于第 1 行:
ORA-00904: "ADD_DAY": 无效的标识符
SQL> select * from SUN where extract(day from (last_day(HIREDATE)))-extract(day from HIREDATE)=3;
未选定行
SQL> select * from SUN where extract(day from (last_day(HIREDATE)))-extract(day from HIREDATE)=2;
EMPNO EMNAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- --------------- --------------- ---- ---------- ---------- ---------- ----------
1 Amy Lee manager 29-3月 -99 2000 600 10
SQL> insert into SUN(EMPNO,EMNAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values(7,'Joy John','clerk',6,'1
4-5月 -1988',2100,2000,30);
已创建 1 行。
SQL> select * from SUN where extract(year from sysdate)-extract(year form HIREDATE)=5;
select * from SUN where extract(year from sysdate)-extract(year form HIREDATE)=5
*
ERROR 位于第 1 行:
ORA-00907: 缺少右括号
SQL> select * from SUN where extract(year from sysdate)-extract(year from HIREDATE)=5;
EMPNO EMNAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- --------------- --------------- ---- ---------- ---------- ---------- ----------
5 Vasili Graty clerk 6 14-5月 -01 2100 2000 30
SQL> select * from SUN where extract(year from sysdate)-extract(year from HIREDATE)=12;
未选定行
SQL> select * from SUN where extract(year from sysdate)-extract(year from HIREDATE)>12;
EMPNO EMNAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- --------------- --------------- ---- ---------- ---------- ---------- ----------
7 Joy John clerk 6 14-5月 -88 2100 2000 30
SQL>
IP 地址: 已登录 来自: 北京市网通
第 3 楼
2006-03-06, 08:09 下午
艾山
等级: 士兵
注册: 2006年3月4日
区域: 北京
积分: 13
精华: 0
发贴: 8
Re: 请问一个有关ORACLE的问题?
上面是我整个解决问题的过程,其中前面大部分都是失败的尝试。
我没学过多少日期函数,后来泳道的解决问题的日期函数是从网上查到的。
1.
last_day()返回包含了日期参数的月份的最后一天的日期
date_value:=last_day(date_value)
SQL> select last_day(date'2000-02-01') "Leap Yr?" from dual;
Leap Yr?
----------
29-2月 -00
SQL> select last_day(sysdate) "Last day of this month" from dual;
Last day o
----------
30-11月-03
2.
extract()找出日期或间隔值的字段值
date_value:=extract(date_field from [datetime_value|interval_value])
SQL> select extract(month from sysdate) "This Month" from dual;
This Month
----------
11
SQL> select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;
3 Years Out
-----------
2006
SQL>
IP 地址: 已登录 来自: 北京市网通
第 1 页 总共 1 页 [共有 3 条记录]
第二书店论坛
»
技术交流区
»
数据库技术
»
请问一个有关ORACLE的问题?
请选择
论坛首页
─» 论坛搜索
─» 最新主题
─» 热门主题
─» 未回复的主题
用户选项
─» 登陆
─» 注册
─» 找回密码
Dearbook交流组
─» 网站公告
─» 热点新书、畅销图书推荐
─» 优惠购书大讨论
─» 名家线上交流/出版信息交流
─» 意见反馈
─» 选题与出版
─» 缺货登记
技术交流区
─» 开发语言
─» JAVA技术
─» .NET技术
─» .Net技术
─» Borland 技术社区
─» 数据库技术
─» 数据库开发
─» Ajax讨论区
─» WEB开发
─» 多媒体设计
─» 操作系统专区
─» 多媒体技术
─» 硬件专区
─» 软件工程/项目管理
─» 图形图象专区
图书出版交流组
─» 电子书共享
─» 图书评论
信息交流区
─» 二手书交易
─» 互联网关注
─» 电子版图书
─» IT文化
:
DearBook
|
CSDN
|
̳
Asp.Net Forums version: 2.2.1929
(C)Copyright 2004-2005,
hiDotNet.com.
All Rights Reserved.
意见反馈
|
关于我们