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天 展开
 我来答
解0人
2016-09-21 · TA获得超过2389个赞
知道大有可为答主
回答量:1474
采纳率:83%
帮助的人:758万
展开全部
--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
wackyer
推荐于2018-05-10 · TA获得超过928个赞
知道小有建树答主
回答量:605
采纳率:71%
帮助的人:385万
展开全部
典型的拿来主义啊这是。
提供思路:
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号,得到的就是这个月的天数。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
想发钱的乞丐
2016-09-21 · TA获得超过100个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:86万
展开全部
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语法编写。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式