第二书店论坛
欢迎光临第二书店论坛。激活帐号(说明:系统正在将老用户陆续填加到论坛中,如激活失败,请直接登陆!)
首页 搜索 用户列表 FAQ 注册 登录  
第二书店论坛 » 技术交流区 » 数据库技术 » 请问一个有关ORACLE的问题?
  请问一个有关ORACLE的问题?
帖子发起人: 艾山   发起时间: 2006-03-04 08:40 下午   回复数: 2
下一主题 »
楼主
  2006-03-04, 08:40 下午
艾山 离线,最后访问时间: 2006-3-24 20:30:29 艾山

发帖数前50位
男

士兵
等级: 士兵
注册: 2006年3月4日
区域: 北京
积分: 13
精华: 0
发贴: 8
  请问一个有关ORACLE的问题?
 
我是Oracle的初学者,碰到一个不会的问题,请大家帮忙分析一下:

STUDENT表中,有BIRTHDAY列,类型为DATE。

问:
1.查询STUDENT表中所有出生日期为各月倒数第三天的纪录;
2.利用BIRTHDAY列,查询STUDENT表中所有年龄大于12岁的纪录。

大家不用替我写出答案,只要告诉我用到什么函数和方法,并简要分析一下就行。
谢谢诸位了!

Smile
IP 地址: 已登录   来自: 北京市网通    返回顶部
第 2 楼
  2006-03-06, 08:05 下午
艾山 离线,最后访问时间: 2006-3-24 20:30:29 艾山

发帖数前50位
男

士兵
等级: 士兵
注册: 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-24 20:30:29 艾山

发帖数前50位
男

士兵
等级: 士兵
注册: 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 | CSDN | ̳

Asp.Net Forums version: 2.2.1929
(C)Copyright 2004-2005, hiDotNet.com. All Rights Reserved.
意见反馈 | 关于我们

Powered by Community Server :: Forums 中文本地化: hiDotNet.com