avhimkov
7/30/2017 - 8:39 AM

Выравнивание времени ожидания в очереди Damask

Выравнивание времени ожидания в очереди Damask

/*1 шаг готово*/
UPDATE [Damask-4].[dbo].[Process]
	SET DateTime = '2011-11-01 01:11:11'
	WHERE DateTime LIKE '%[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]%'

/*2 шаг готово*/
UPDATE t1
	SET t1.DateTime = t2.DateTime
	FROM [Damask-4].dbo.Process t1  
	JOIN [Damask-4].dbo.Process t2 
	ON t1.Ticket = t2.Ticket and t2.Event = 14
	WHERE t1.DateTime LIKE '2011-11-01 01:11:11'
	
UPDATE [Damask-4].dbo.Process
  SET DateTime = CONVERT(nchar, DATEADD(MI, DATEDIFF(MI, p.DateTime, v.TimeCall)+14, CONVERT(DATETIME, p.DateTime, 120)), 120) 
  FROM [Damask-4].dbo.Process p  
  JOIN [Damask-4].dbo.Terminal v
  ON p.Ticket = v.Ticket
  WHERE 
		dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,CURRENT_TIMESTAMP),0))  < CONVERT(DATETIME, p.DateTime, 120) AND DATEDIFF(MI, v.TimeCall, p.DateTime) > 14 AND p.Event = 1
		/*EOMONTH(CURRENT_TIMESTAMP, -1) */
		OR 
		dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,CURRENT_TIMESTAMP),0))  < CONVERT(DATETIME, p.DateTime, 120) AND DATEDIFF(MI, v.TimeCall, p.DateTime) > 14 AND p.Event = 14

		  
/*4 шаг */
UPDATE [Damask-4].dbo.Process 
	SET [Damask-4].dbo.Process.DateTime = CONVERT(nchar, DATEADD(MI, DATEDIFF(MI, p.DateTime, v.TimeCall)+14, CONVERT(DATETIME,  p.DateTime, 120)), 120)
	FROM [Damask-4].dbo.Process p  
	JOIN [Damask-4].dbo.Terminal v
	ON p.Ticket = v.Ticket
	WHERE	
			dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,CURRENT_TIMESTAMP),0))  < CONVERT(DATETIME, p.DateTime, 120) AND p.DateTime < v.TimeCall AND p.Event = 1
			/*EOMONTH(CURRENT_TIMESTAMP, -1) */
			OR 
			dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,CURRENT_TIMESTAMP),0))  < CONVERT(DATETIME, p.DateTime, 120) AND  p.DateTime < v.TimeCall AND p.Event = 14
	
UPDATE [Damask-4].dbo.Process
  SET DateTime = CONVERT(nchar, DATEADD(MI, DATEDIFF(MI, p.DateTime, v.TimeCall)+14, CONVERT(DATETIME, p.DateTime, 120)), 120) 
  FROM [Damask-4].dbo.Process p  
  JOIN [Damask-4].dbo.Terminal v
  ON p.Ticket = v.Ticket
  WHERE 
		dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,CURRENT_TIMESTAMP),0))  < CONVERT(DATETIME, p.DateTime, 120) AND DATEDIFF(MI, v.TimeCall, p.DateTime) > 14 AND p.Event = 1
		/*EOMONTH(CURRENT_TIMESTAMP, -1) */
		OR 
		dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,CURRENT_TIMESTAMP),0))  < CONVERT(DATETIME, p.DateTime, 120) AND DATEDIFF(MI, v.TimeCall, p.DateTime) > 14 AND p.Event = 14


DELETE p
	FROM [Damask-4].dbo.Process p  
	JOIN [Damask-4].dbo.Terminal v
	ON p.Ticket = v.Ticket
	WHERE 
			/*Текущий месц*/
			dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,CURRENT_TIMESTAMP),0))  < CONVERT(DATETIME, p.DateTime, 120) AND p.DateTime < v.TimeCall AND p.Event = 1
			/*Предидущий месц*/
			/*dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,CURRENT_TIMESTAMP)-1,0))  < CONVERT(DATETIME, p.DateTime, 120) AND p.DateTime < v.TimeCall AND p.Event = 1*/
			
			/*MSSQL 2012*/
			/*EOMONTH(CURRENT_TIMESTAMP, -1) */
			
			OR 
			dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,CURRENT_TIMESTAMP),0))  < CONVERT(DATETIME, p.DateTime, 120) AND p.DateTime < v.TimeCall AND p.Event = 14
SELECT p.DateTime, p.Ticket, p.Event,  v.Ticket, v.TimeCall, DATEDIFF(MI,  v.TimeCall, p.DateTime) AS TimeLeft 
  
  FROM [Damask-4].dbo.Process p  
  
  JOIN [Damask-4].dbo.Terminal v
  
  ON p.Ticket = v.Ticket

  WHERE  DATEDIFF(MI, v.TimeCall, p.DateTime)>14 AND p.Event=1

  ORDER BY p.Ticket

 SELECT p.DateTime, p.Ticket, p.Event,  v.Ticket, v.TimeCall, DATEDIFF(MI,  v.TimeCall, p.DateTime) AS TimeLeft 
  
  FROM [Damask-4].dbo.Process p  
  
  JOIN [Damask-4].dbo.Terminal v
  
  ON p.Ticket = v.Ticket

  WHERE  DATEDIFF(MI, v.TimeCall, p.DateTime)>14 AND p.Event=1

  ORDER BY p.Ticket