⑴ sql编写的工龄计算和它所产生的值,小于等于15号算本月大于16号按下月开始计算工龄 大于6个月就有补贴;
select
(casewhen
((casewhen[工龄起算日]isnullthen0
elsedatediff(month,[工龄起算日],SalaryDate)+(casewhendatepart(day,[工龄起算日])<=15then1else0end)
end)
)<=6then0
else(casewhenemployeetype=N'经理'then100
whenemployeetypein(N'主管',N'领班')then80
whenemployeetype=N'员工'then50
else0
end)
end
)as[补贴]
看上面这个sql是否符合要求。
⑵ SQLserver2000查询中,知道一个职员的入职日期如(job_date),怎么样查询工龄啊急
use pubs
select year(date(出生日期))- year(date(工作日期)) as 工龄 from 雇佣表 into table 表名
⑶ sql 急求工龄计算语句
SELECTe_no员工编号,d_name部门名称,e_name员工姓名,e_salary薪水,e_hireDate入职日期,
DATEDIFF(YEAR,e_hireDate,GETDATE())工龄
FROMemployeeinnerjoinDept
one_gender='女'andEmployee.dept_no=Dept.d_no
⑷ SQL语句如何根据出生日期计算年龄、工作时间计算工龄
那个窗口改不了了
select convert(datetime,case Len(Rtrim(C)) when 15 then '19' + SubString(C,7,2) + '-' + SubString(C,9,2) + '-' + SubString(C,11,2) when 18 then SubString(C,7,4) + '-' + SubString(C,11,2) + '-' + SubString(C,13,2) else A0111 end )
from A
查出的结果都是日期格式吗?如果不是说明C列有数据不对
select datediff(year,convert(datetime,case Len(Rtrim(C)) when 15 then '19' + SubString(C,7,2) + '-' + SubString(C,9,2) + '-' + SubString(C,11,2) when 18 then SubString(C,7,4) + '-' + SubString(C,11,2) + '-' + SubString(C,13,2) else A0111 end
),getdate())
from C
又怎么样
再就是B列的数据类型是什么?
⑸ 已知工人的入职时间《hire_date》,怎样用SQL语句,查询出工人的工人的工龄。字段是datetime
工作月数:
select datediff(mm,hire_date,getdate()) from tablename
工作年数:
select datediff(mm,hire_date,getdate())/12 from tablename
⑹ 求教计算特殊工种工龄SQL语句
selectt.zgbm,(selectnamefromAwherezgbm=t.zgbm)asname
,SUM(casewhengz0like'T%'thenyy1-yy0else0end)as[特殊工种工龄]
from
(selectt1.zgbm,t1.yyasyy0,t1.gzasgz0
,casewhenexists(select*fromBwherezgbm=t1.zgbmandyy>t1.yy)
then(selectMIN(yy)fromBwherezgbm=t1.zgbmandyy>t1.yy)
elseYEAR(getdate())
endasyy1
,casewhenexists(select*fromBwherezgbm=t1.zgbmandyy>t1.yy)
then(selecttop1gzfromBwherezgbm=t1.zgbmandyy>t1.yyorderbyyy)
elsenull
endasgz1
fromBt1)ast
groupbyt.zgbm
--或
selectt.zgbm,(selectnamefromAwherezgbm=t.zgbm)asname
,SUM(casewhengz0like'T%'thenyy1-yy0else0end)as[特殊工种工龄]
from
(selectt1.zgbm,t1.yyasyy0,t1.gzasgz0
,isnull((selectMIN(yy)fromBwherezgbm=t1.zgbmandyy>t1.yy),YEAR(getdate()))asyy1
,(selecttop1gzfromBwherezgbm=t1.zgbmandyy>t1.yyorderbyyy)asgz1
fromBt1)ast
groupbyt.zgbm
⑺ sql 工龄计算
这是我以前写的和你的这个差不多,你看一下,把你的改改就OK了:
select Age=case
when (month(hiredate)<month(getdate())) or (day(hiredate)<=day(getdate())
and month(hiredate) = month(getdate()))
then datediff(month,hiredate,getdate())
else
datediff(month,hiredate,getdate())-1 --否则减1
end
from emp where empno=11