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年么