SQL SERVER数据库做几个简单的问题,谁有空帮我解答下?在线等
3、请按出生日期计算出员工的年龄(周岁),精确到月,也就是当前月份如果是3月,只要是3月份出生的都可以算到满周岁.(非年数减年数)姓名、工号、出生日期、出生年份、出生月份...
3、请按出生日期计算出员工的年龄(周岁),精确到月,也就是当前月份如果是3月,只要是3月份出生的都可以算到满周岁.(非年数减年数)姓名、工号、出生日期、出生年份、出生月份、当前年份、当前月份、周岁4、请用UPDATE语句更新人员基本信息表A01中每个员工的参加培训课时汇总数。其中主建是工号,姓名、工号、培训课时汇总。5、请写一个触发器,当录入身份证号码之后,自动计算出生日期,规则15位身份证是从第6位之后的6位,18位身份证是从第6位这后的8位。6 定义一个函数能计算出指定月份有多少天,如201002有28天,201003有31天,200907月31天
展开
3个回答
展开全部
--3--
select 姓名,员工号,出生日期,year(出生日期)出生年份,month(出生日期)出生月份,year(getdate())当前年份,month(getdate())当前月份,
datediff(M,出生日期,getdate())/12 as 周岁
from a01
--4--
update a01 set 培训课时=培训课时汇总
from a01,(select 员工号,sum(培训小时) as 培训课时汇总 from Train group by 员工号) Train
where a01.员工号=Train.员工号
--5--
create trigger GetBirthday on a01
for update,insert
as
begin
declare @sfz varchar(18)
declare @bday date
select @sfz=身份证号 from inserted
select @bday=cast(substring(@sfz,7,case len(@sfz) when 15 then 6 else 8 end) as date)
update a01 set 出生日期=@bday from a01,inserted where a01.员工号=inserted.员工号
end
--6--
create function dbo.GetDays(@d date)
returns int
as
begin
declare @days int
select @days= day(dateadd(d,-DAY(@d),DATEADD(M,1,@d)))
return @days
end
展开全部
典型的拿来主义啊这是。
提供思路:
1, select DATEDIFF('M', '日期1', '日期2') 月份
月份除以12 为年
2, update a set col=(select sum(chengji) from b where b.col=a.col)
3, if len(@identityno)=15 then set @brithdt= right(left(@identityno, m), n)
else set @brithdt= right(left(@identityno, m), n)
4, 下个月1号减这个月1号,得到的就是这个月的天数。
提供思路:
1, select DATEDIFF('M', '日期1', '日期2') 月份
月份除以12 为年
2, update a set col=(select sum(chengji) from b where b.col=a.col)
3, if len(@identityno)=15 then set @brithdt= right(left(@identityno, m), n)
else set @brithdt= right(left(@identityno, m), n)
4, 下个月1号减这个月1号,得到的就是这个月的天数。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
3、SELECT 姓名,员工号,出生日期,TO_CHAR(出生日期,'YYYY') 出生年份,
TO_CHAR(出生日期,'MM')出生月份,TO_CHAR(SYSDATE,'YYYY')当前年份,
TO_CHAR(SYSDATE,'MM')当前月份,CASE
Sign(To_Char(SYSDATE, 'MM') - To_Char(出生日期, 'MM')) WHEN -1
THEN To_Char(SYSDATE, 'YYYY') - To_Char(出生日期, 'YYYY')
ELSE To_Char(SYSDATE, 'YYYY') - To_Char(出生日期, 'YYYY') + 1 END 周岁
FROM A01;
4、UPDATE AO1 SET 培训课时 = (SELECT SUM(培训小时) from train
WHERE TRAIN.员工号 = A01.员工号 group by 员工号 );
5、触发器写个主体,其余的你自己补下
nlog = to_date(SUBSTR(:new.身份证号,7,8),'yyyy-mm-dd');
6、计算出指定月份有多少天使用一个查询语句就可以了。如果非要定义一个函数,也可以以下面这条语句为主体为定义。
select add_months(to_date('201609', 'YYYYMM'),1)-to_date('201609', 'YYYYMM')
from dual
以上用ORACLE语法编写。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询