1. 用存储过程写出本周过生日的人数和姓名
CREATE PROCEDURE [student_info] (@class varchar(4)) WITH EXECUTE AS CALLER AS select 表2.学号,表2.姓名,表3.课程号,表3.成绩 from 表2,表3 where 表2.学号=表3.学号 and 表2.班级=@class GO
2. sql写一个存储过程或者是查询语句,返回本月的天数
select datediff(day,convert(varchar(10),getdate(),120),convert (varchar(10),dateadd(month,-1,getdate()),120))
这个语句可以用用 我测试没有找到问题 ,你看有问题没
日期 我用 getdate()获取的
3. 如何编写存储过程
//创建存储过程
CREATE PROCEDURE userData(
IN id INT
)
BEGIN
SELECT * from userdata WHERE userflag = id;
END;
其中IN是传进去的变量;
drop procere userData;//销毁这个存储过程。
call userData(2) //调用存储过程。
(3)编写一个存储过程输出生日及天数扩展阅读:
sql中的存储过程及相关介绍:
CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]
[(参数#1,…参数#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行
其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数
(SQL Server 7.0以上版本),参数的使用方法如下:
@参数名数据类型[VARYING] [=内定值] [OUTPUT]。
每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。
[内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数。
同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。
参考资料来源:网络-储存过程
4. java编写一个简单的输入生日计算下一个生日时间的代码
import java.util.Calendar;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
/**
* Title: Test03.java<br>
* Description:
*
* @author 王凯芳
* @date 2020年3月5日 下午6:03:04
* @version 1.0
*
* @request 编写一个方法能计算任何一个人今天离他最近下一次生日还有多少天,然后在主方法(main方法)中输入你的出生年月日,调用该方法的计算结果并输出信息“某某同学离自己最近下一次生日x天”。
*/
public class Test03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的生日,格式为(2000/01/01):");
String line = sc.nextLine();
String[] strs = line.split("/");
if (strs.length == 3) {
int days = getDays(strs[0], strs[1], strs[2]);
if (days == 0) {
System.out.println(String.format("%s 同学,今天是你的生日,祝你生日快乐(#^.^#)", name, days));
} else {
System.out.println(String.format("%s 同学离自己最近下一次生日%d天。", name, days));
}
} else {
System.out.println("生日输入不正确!请按格式输入。");
}
sc.close();
}
/**
* 获取最近一次生日天数
*
* @param year
* @param month
* @param day
* @return
*/
public static int getDays(String year, String month, String day) {
Calendar now = Calendar.getInstance();
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);
int now_year = now.get(Calendar.YEAR);
Calendar birthday = Calendar.getInstance();
birthday.set(Calendar.YEAR, now_year);
birthday.set(Calendar.MONTH, Integer.parseInt(month) - 1);
birthday.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day));
birthday.set(Calendar.HOUR_OF_DAY, 0);
birthday.set(Calendar.MINUTE, 0);
birthday.set(Calendar.SECOND, 0);
birthday.set(Calendar.MILLISECOND, 0);
long diff = now.getTimeInMillis() - birthday.getTimeInMillis();
if (diff == 0) {
return 0;
} else if (diff < 0) {
long diffDays = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
return Math.abs((int) diffDays);
} else {
birthday.add(Calendar.YEAR, 1);
long diffMi = birthday.getTimeInMillis() - now.getTimeInMillis();
long diffDays = TimeUnit.DAYS.convert(diffMi, TimeUnit.MILLISECONDS);
return (int) diffDays;
}
}
}
5. 编写一个程序输入一个人出生年月日和当前日期,计算出他的年龄和距离下一生日的的天数
用万年历算法, y, m, d 分别表示年月日
int getDay ( int y, int m, int d )
{
static int dm [] = { 333, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 303 };
y += (m-1)/12;
m %=12;
// 计算闰年
if ( !(y%400) ) r = 1; else if ( !(y%100) ) r = 0; else if ( !(y%4) ) r = 1; else r = 0;
if ( r && (1 != m) && (2 != m) ) d ++; // 处理闰年二月后日期
y --;
return (y*365 + dm [ m ] + d + y/4 - y/100 + y/400);
}
int yCalc ( int y, int m, int d, int y0, int m0, int d0 ) // 年龄
{
return ( getDay (y, m, d) - getDay (y0, m0, d0) ) / 365;
}
int dCalc ( int y, int m, int d, int y0, int m0, int d0 ) // 天数
{
int d1, d2;
d1 = getDay ( y, m0, d0 ); // 今年生日
d2 = getDay ( y, m, d ); // 今天
if (d1<d2) d1 = getDay ( y+1, m0, d0 ) // 今年生日过去了, 算明年生日
return d1 - d2;
}
6. 企业员工信息表:员工编号 性别 姓名 出生年月 登记日期 1.编写一个存储过程实现员工信息的添加
CREATE TABLE T_YGXXB( --员工信息表
YGBH char(6) primary key, --员工编号,主键,格式:YYxxxx YY年2位 xxxx流水
YGXM varchar2(8), --员工姓名
YGXB char(1) CHECK (ygxb IN ('M','W')), --员工性别,男=M 女=W
CSRQ char(8)); --出生日期,格式:YYYYMMDD
1、存储过程
create or replace procere P_insert(
v_ygbh IN varchar2,
v_ygxm IN varchar2,
v_ygxb IN varchar2,
v_csrq IN varchar2) is
begin
INSERT INTO t_ygxxb values(v_ygbh,v_ygxm,v_ygxb,v_csrq);
COMMIT;
end P_insert;
调用:BEGIN p_insert('130001','曹操','M','01550101'); END;
2、Select * from t_ygxxb where ygbh='&bh';
3、函数
create or replace function F_max(i in int,j in int,k IN INT) return integer is
Result integer;
begin
if i>=j then
IF i>=k THEN Result:=i;
ELSE Result:=k;
END IF;
ELSE
IF j>=k THEN Result:=j;
ELSE Result:=k;
END IF;
end if;
return(Result);
end F_max;
调用:BEGIN dbms_output.put_line(f_max(5,6,7)); END;
4、函数
create or replace function F_name(v_ygbh varchar2) return varchar2 is
v_name VARCHAR2(8);
begin
SELECT ygxm INTO v_name FROM t_ygxxb WHERE ygbh=v_ygbh;
return(v_name);
end F_name;
调用:BEGIN dbms_output.put_line(f_name('130001')); END;
7. 使用SQL语句创建存储过程
使用SQL语句创建存储的具体过程如下:
1、首先,打开企业管理器,选择【工具】-【查询分析器】:
8. 怎么用存储过程 查找当前时间七天内生日的人
你Birthday 字段是什么数据类型??
格式是1982-01-02 还是只有月和日 例如 01-02,birthday 是取的每一年的生日吗?即:1982-01-02出生的人,今年的生日是2008-01-02,birthday 是取的2008-01-02 吗?
上面其他人的方法都是错的,
select DATEDIFF(day,'1982-12-06',getdate()) 你们都算算是等于 0吗?
9. 编写一个程序,把你的年龄转换成天数并输出两者的值。(不用考虑闰年)
private
sub
command1_click()
dim
x%,
y%,
ts%
dim
s
as
string
x
=
inputbox("年份=")
y
=
inputbox("月份=")
if
(y
mod
4)
=
0
and
(y
mod
100)
<>
0
then
'闰年
if
y
=
1
or
y
=
3
or
y
=
5
or
y
=
7
or
y
=
8
or
y
=
10
or
y
=
12
then
'月份31天
ts
=
31
elseif
y
=
2
then
'闰月
ts
=
29
else
'月份30天
ts
=
30
end
if
s
=
cstr(x)
&
"年是闰年"
else
'非闰年
if
y
=
1
or
y
=
3
or
y
=
5
or
y
=
7
or
y
=
8
or
y
=
10
or
y
=
12
then
'月份31天
ts
=
31
elseif
y
=
2
then
'非闰月
ts
=
28
else
'月份30天
ts
=
30
end
if
s
=
cstr(x)
&
"年不是闰年"
end
if
print
s
&
","
&
cstr(y)
&
"月天数="
&
cstr(ts)
&
"天"
end
sub
'判断月份时不用再加上对于年的判断了。
10. 建立一个存储过程,返回今天是2013年中的第多少天 oracle
用函数datediff()就能实现,如下:
select datediff(day,'2015-01-01',getdate())+1
如果想写成存储过程,可以自己完善
说明:datediff(day,D1,D2) 是D2与D1相差的天数,值可以自己赋,另外你的问题描述的有问题吧,今天是2013年的第几天?亲确定是2013年么