通过工作日期计算工龄,在线等

llh6795 2010-09-09 09:03:02
通过工作日期计算工龄,但工龄计算月份对到工作日期月份的下一月

表TAB

XM GZRQ GL
AA 2008-09-03 1
BB 2005-08-12 5
CC 2001-06-01 9


datediff(month,gzrq,getdate())/12:不能对到下一月,怎么处理?
请大家指点?
...全文
163 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ws_hgo 2010-09-09
  • 打赏
  • 举报
回复
兄弟注意结贴...
llh6795 2010-09-09
  • 打赏
  • 举报
回复
ws_hgo:非常感谢,结贴了
ws_hgo 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 llh6795 的回复:]
谢谢大家,OK O(∩_∩)O~
[/Quote]
搞定了吧
llh6795 2010-09-09
  • 打赏
  • 举报
回复
谢谢大家,OK O(∩_∩)O~
ws_hgo 2010-09-09
  • 打赏
  • 举报
回复
create table #TT
(
XM varchar(20),
GZRQ datetime,
GL int
)
insert into #TT select 'AA','2008-09-03',1
union all select 'BB','2005-08-12',5
union all select 'CC','2001-06-01',9

select XM,datediff(month,dateadd(month,1,gzrq),getdate())/12 '工龄' from #TT


XM 工龄
-------------------- -----------
AA 1
BB 5
CC 9

(3 行受影响)
ws_hgo 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 llh6795 的回复:]
说明:AA 2008-09-03 1
因为到下一个月10月才算两年工龄,所以现在是1
[/Quote]

你说的是下个月的
肯定是2年的
llh6795 2010-09-09
  • 打赏
  • 举报
回复
说明:AA 2008-09-03 1
因为到下一个月10月才算两年工龄,所以现在是1
王向飞 2010-09-09
  • 打赏
  • 举报
回复

--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:[TB]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]')
AND type in (N'U'))
DROP TABLE [TB]
GO

---->建表
create table [TB]([XM] varchar(2),[GZRQ] datetime,[GL] int)
insert [TB]
select 'AA','2008-09-03',1 union all
select 'BB','2005-08-12',5 union all
select 'CC','2001-06-01',9
GO



--> 查询结果
SELECT XM,GZRQ,DATEDIFF(MM,DATEADD(MM,-1, GZRQ),GETDATE())/12 AS gl
FROM [TB]
--> 删除表格
--DROP TABLE [TB]

Mr_Nice 2010-09-09
  • 打赏
  • 举报
回复
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([XM] varchar(2),[GZRQ] datetime,[GL] int)
insert [TB]
select 'AA','2008-09-03',1 union all
select 'BB','2005-08-12',5 union all
select 'CC','2001-06-01',9

select * from [TB]

SELECT XM,gzrq,GL = DATEDIFF(MONTH,gzrq,DATEADD(MONTH,1,GETDATE()))/12 FROM TB

/*
XM gzrq GL
AA 2008-09-03 00:00:00.000 2
BB 2005-08-12 00:00:00.000 5
CC 2001-06-01 00:00:00.000 9*/
ws_hgo 2010-09-09
  • 打赏
  • 举报
回复
create table #TT
(
XM varchar(20),
GZRQ datetime,
GL int
)
insert into #TT select 'AA','2008-09-03',1
union all select 'BB','2005-08-12',5
union all select 'CC','2001-06-01',9

select XM,datediff(month,gzrq,dateadd(month,1,getdate()))/12 '工龄' from #TT


XM 工龄
-------------------- -----------
AA 2
BB 5
CC 9

(3 行受影响)
ws_hgo 2010-09-09
  • 打赏
  • 举报
回复
datediff(month,gzrq,dateadd(month,1,getdate()))/12

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧