1.
if ( year(getdate())%4=0 and year(getdate())%100<>0) or ( year(getdate())%400=0)
return 1
else
return 0
if ( year(getdate())%4=0 and year(getdate())%100<>0) or ( year(getdate())%400=0)
return 1
else
return 0
函数名:f_IsLeapYear
功能:判断闰年
参数:
@Year---字符串
返回:
1---是
0---否
Author:gmlxf(烛光)2003-12-15
*/
/*判断闰年*/
drop function f_IsLeapYear
go
create function f_IsLeapYear
(
@Year varchar(4)
)
returns bit
as
begin
-- 方法一:
if (@Year%4=0 and @Year%100<>0) or @Year%400=0
-- 方法二:if isdate(@Year + '-2-29')=1
-- 方法三:if day(cast((@year + '-3-1') as datetime)-1)=29
return 1
return 0
end
go
-- 调用
select dbo.f_IsLeapYear('3000')
select dbo.f_IsLeapYear('2004')
一.exec stu_test '001001','计算机基'
二.exec stu_test 001001,'计算机基'
三.
declare @ret int
exec @ret =stu_test '001001','计算机基'
--函数内容实现判断输入的年份是否为闰年?
--如果是闰年,函数返回1,否则函数返回0;
create function f_qry(@year int)
returns bit
as
begin
return(case day(dateadd(month,1,dateadd(year,@year-1900,'1900-01-31'))) when 29 then 1 else 0 end)
end
go--调用
select dbo.f_qry(2004)
CREATE FUNCTION IsRunYear(@Date datetime)
RETURNS bit
as
begin
declare @ bit
set @ = 0
if datediff(day,dateadd(year,datediff(year,0,@Date ),0),dateadd(year,datediff(year,0,@Date )+1,0)) = 366
set @ = 1
return (@)
end
--否则输出xxxx年是平年。其中xxxx代表当前年份。
--注意:判断某年是否为闰年,必须满足以下条件之一:
--(1) 该年能被400整除;
--(2) 该年你能被4整除,但是不能被100整除。
create function IsRunYear(@year int)
returns varchar(10)
as
begin
return(cast(@year as varchar)+'年是'+case day(dateadd(month,1,dateadd(year,@year-1900,'1900-01-31'))) when 29 then '闰' else '平' end+'年')
end
go--调用
select dbo.IsRunYear(2004)
alter table test
add constraint test_name check(成绩>=0 and 成绩<=100)
(1) 上述SQL语句的含义是什么?
(2) 请使用规则对象来实现上述语句。
--*/为表 test 添加约束,限制 [成绩] 字段的值必须在 0~`100之间
RETURNS bit
as
begin
declare @ bit
set @ = 0select @ = 1
where datediff(day,dateadd(year,datediff(year,0,@Date ),0),dateadd(year,datediff(year,0,@Date )+1,0)) = 366return (@)
end
create procedure stu_test @no char(8),@cname char(16)
as
select *
from xs a,xs_kc b
where a.学号=b.学号 and a.学号=@no and b.课程名=@cname
go
现在需要使用stu_test存储过程查询学号为’001001’,课程名为’计算机基础’的相关信息,
请写出至少五种调用方式。
--*/--1.
exec stu_test '001001','计算机基础'--2.
exec stu_test @no='001001',@cname='计算机基础'--3.
declare @no char(8),@cname char(16)
select @no='001001',@cname='计算机基础'
exec stu_test @no,@cname
(1) 创建函数IsRunYear,参数为年份,函数内容实现判断输入的年份是否为闰年?如果是闰年,函数返回1,否则函数返回0;
create function f_IsLeapYear
(
@Year int
)
returns bit
as
begin
if (@Year%4=0 and @Year%100<>0) or @Year%400=0
return 1 return 0
end
go(2) 将当前年份输入函数IsRunYear,若函数返回1,则输出xxxx年是闰年,否则输出xxxx年是平年。其中xxxx代表当前年份。declare @msg varchar(200)
if dbo.f_IsLeapYear(datepart(year,getdate()))=1
set @msg=rtrim(datepart(year,getdate()))+'年是闰年'
else
set @msg=rtrim(datepart(year,getdate()))+'年是平年'print @msgor:
declare @msg varchar(200)
select @msg=rtrim(datepart(year,getdate()))+'年是'+case when dbo.f_IsLeapYear(datepart(year,getdate()))=1 then '闰' else '平' end +'年'print @msg2、 现有SQL语句如下:
alter table test
add constraint test_name check(成绩>=0 and 成绩<=100)
(1) 上述SQL语句的含义是什么?
对表test加check约束,约束名称为test_name,内容为成绩>=0 and 成绩<=100,就是 0<=成绩<=100
(2) 请使用规则对象来实现上述语句。CREATE RULE 成绩_rule
AS
@成绩 >= 0 AND @成绩 <=100
goEXEC sp_bindrule '成绩_rule', 'test.成绩'
go
3、 数据库中定义了以下存储过程:
create procedure stu_test @no char(8),@cname char(16)
as
select *
from xs a,xs_kc b
where a.学号=b.学号 and a.学号=@no and b.课程名=@cname
go
现在需要使用stu_test存储过程查询学号为’001001’,课程名为’计算机基础’的相关信息,请写出至少五种调用方式。
(这题有点变态)
1、exec stu_test '001001','计算机基础'
2、exec stu_test @no ='001001',@cname='计算机基础'
3、exec stu_test @cname='计算机基础',@no ='001001'
4、
declare @no char(8)
declare @cname char(16)
set @no='001001'
set @cname='计算机基础'
exec stu_test @no,@cname
5、stu_test '001001','计算机基础'4、 电力营业系统有一收费数据库,该数据库在每周六时工作量较少,数据库操作不多,在每周日至周五收费业务频繁,数据库操作量大。另外,在每周三下午六点,电力营业部门需要将通过银行付费客户的电力收入更新到电力营业数据库中,该工作持续到晚上八点。由于电力局与银行间线路问题,若第二天工作人员通过与银行对帐发现前一天的更新不完整,则需要将数据库恢复到前一天六点的状态,并重新更新银行数据,再不成功的数据将手工处理。请你针对电力营业的数据库设计一个备份方案,并描述你的方案。这个暂时不回答