sqlserver如何判断时间满n年

杨师同学 2019-08-08 05:26:47
sqlserver 我想写个存储过程:每当员工满n年就生成一条周年祝贺的信息,如何判断员工入职时间满n年?
...全文
413 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2019-08-12
  • 打赏
  • 举报
回复
引用 4 楼 杨师同学 的回复:
[quote=引用 2 楼 二月十六 的回复:]
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T(员工id INT ,[入职时间] Date)
Insert #T
select 1,'2017-01-01' union all
select 2,'2018-08-08' union all
select 3,'2019-01-01' union all
select 4,'2010-08-08'
Go
--测试数据结束
SELECT *,DATEDIFF(YEAR,入职时间,GETDATE()) AS 年数
  FROM #T
 WHERE SUBSTRING(RTRIM(入职时间), 6, 6) = SUBSTRING(CONVERT(NVARCHAR(20), GETDATE(), 120), 6, 6);

请问又怎样在满n年的这个时间点触发存储过程,这个sql语句该怎么写?[/quote]建立一个作业,每天凌晨执行,判断处理。
杨师同学 2019-08-12
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T(员工id INT ,[入职时间] Date)
Insert #T
select 1,'2017-01-01' union all
select 2,'2018-08-08' union all
select 3,'2019-01-01' union all
select 4,'2010-08-08'
Go
--测试数据结束
SELECT *,DATEDIFF(YEAR,入职时间,GETDATE()) AS 年数
  FROM #T
 WHERE SUBSTRING(RTRIM(入职时间), 6, 6) = SUBSTRING(CONVERT(NVARCHAR(20), GETDATE(), 120), 6, 6);

请问又怎样在满n年的这个时间点触发存储过程,这个sql语句该怎么写?
杨师同学 2019-08-12
  • 打赏
  • 举报
回复
又怎样在满n年的时间点,如何触发存储过程,这个sql语句该怎么写?
二月十六 2019-08-12
  • 打赏
  • 举报
回复
引用 6 楼 杨师同学 的回复:
[quote=引用 5 楼 二月十六 的回复:] [quote=引用 4 楼 杨师同学 的回复:][quote=引用 2 楼 二月十六 的回复:]
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T(员工id INT ,[入职时间] Date)
Insert #T
select 1,'2017-01-01' union all
select 2,'2018-08-08' union all
select 3,'2019-01-01' union all
select 4,'2010-08-08'
Go
--测试数据结束
SELECT *,DATEDIFF(YEAR,入职时间,GETDATE()) AS 年数
  FROM #T
 WHERE SUBSTRING(RTRIM(入职时间), 6, 6) = SUBSTRING(CONVERT(NVARCHAR(20), GETDATE(), 120), 6, 6);

请问又怎样在满n年的这个时间点触发存储过程,这个sql语句该怎么写?[/quote]建立一个作业,每天凌晨执行,判断处理。[/quote]大神,我能加您QQ吗?估计有些问题需要再请教您[/quote]结帖,看我简介
杨师同学 2019-08-12
  • 打赏
  • 举报
回复
引用 5 楼 二月十六 的回复:
[quote=引用 4 楼 杨师同学 的回复:][quote=引用 2 楼 二月十六 的回复:]
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T(员工id INT ,[入职时间] Date)
Insert #T
select 1,'2017-01-01' union all
select 2,'2018-08-08' union all
select 3,'2019-01-01' union all
select 4,'2010-08-08'
Go
--测试数据结束
SELECT *,DATEDIFF(YEAR,入职时间,GETDATE()) AS 年数
  FROM #T
 WHERE SUBSTRING(RTRIM(入职时间), 6, 6) = SUBSTRING(CONVERT(NVARCHAR(20), GETDATE(), 120), 6, 6);

请问又怎样在满n年的这个时间点触发存储过程,这个sql语句该怎么写?[/quote]建立一个作业,每天凌晨执行,判断处理。[/quote]大神,我能加您QQ吗?估计有些问题需要再请教您
二月十六 2019-08-08
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T(员工id INT ,[入职时间] Date)
Insert #T
select 1,'2017-01-01' union all
select 2,'2018-08-08' union all
select 3,'2019-01-01' union all
select 4,'2010-08-08'
Go
--测试数据结束
SELECT *,DATEDIFF(YEAR,入职时间,GETDATE()) AS 年数
FROM #T
WHERE SUBSTRING(RTRIM(入职时间), 6, 6) = SUBSTRING(CONVERT(NVARCHAR(20), GETDATE(), 120), 6, 6);



独木成林_ 2019-08-08
  • 打赏
  • 举报
回复
----
https://bbs.csdn.net/topics/392259661
USE tempdb GO --测试数据 if not object_id(N'T') is null drop table T Go CREATE TABLE T( birthday DATETIME, age AS DATEDIFF(YEAR,birthday,GETDATE()) --计算列 ) GO INSERT INTO t(birthday) VALUES('1990-01-01') --你可以试着修改你本机的时间,比如改为2018 年, 这里执行就自动变成 28 岁了 SELECT * FROM t /* birthday age
1990-01-01 27

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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