SQL时间戳使用之任务循环

本文详细介绍了如何使用存储过程获取任务列表,包括未开始及正在执行超过一分钟的任务筛选逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

USE [IwomTask]
GO
/****** Object:  StoredProcedure [dbo].[GetTaskList]    Script Date: 12/01/2012 02:00:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		arvin
-- Create date: 2012-11-21
-- Description:	获取任务的存储过程,获取未开始和正在进行中但已超过1分钟的任务(暂时调整为一分钟)
-- =============================================
ALTER PROCEDURE [dbo].[GetTaskList]
	@SearchEngineIDs varchar(8000)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @tempTable table(Task_ID int)
	DECLARE @timestampTable table(timemap bigint)
	DECLARE @sql varchar(max)
	SET @sql='
	SELECT MIN([timemap])
	FROM [dbo].[Open_Task]
	WHERE 1=1
	and IsCrawler=1
	and (taskState = 1 or (taskState = 2 and taskUpdateDate < dateadd(minute,-1,getdate()))) 
	and SearchEngine_ID in ('+@SearchEngineIDs+')
	group by SearchEngine_ID'	
	--获得最小的数据集
	INSERT INTO @timestampTable EXEC (@sql)
	--获得任务ID的数据集
	INSERT INTO @tempTable
	SELECT TK.ID FROM dbo.Open_Task AS TK ,@timestampTable AS TM
	WHERE TK.timemap=TM.timemap 
	--更新状态位与时间
	UPDATE  [Open_Task]
	 SET taskState = 2
		,taskUpdateDate = getdate()
	WHERE 1=1
	and [ID]in(SELECT Task_ID FROM @tempTable)
	--获得数据源
	SELECT [ProjectID] as Brand_ID 
	   , 1 as GetDays
	   , [getItems] as GetItems
	   , [Searchkey] as KeyWord
	   ,[SearchType] as Task_Postion
	   ,''as Site_Domain
	   ,[ID] as Task_ID
	   ,[SearchEngine_ID] as SearchEngine_ID
	   ,'' as ExcludeDomain
	   ,[IncludeKey] as MustInclude
	   ,[NoContainKey] as NotInclude
	   ,1 as ResultOrder
	   ,[taskState] as Task_State
	   ,[connectionMark] as Task_Mark
	   ,'1900-01-01 00:00:00.000' as Task_Closetime
	   , [BeginDate] as Task_Begintime
	   ,0 as Task_Seg
	   ,0 as Task_Preview 
	   ,[UserID] as userid
	   ,[KeyID] as KeyID
	FROM [dbo].[Open_Task]
	WHERE 1=1
	and [ID]in(SELECT Task_ID FROM @tempTable)
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值