Estou enfrentando um desafio ao comparar os valores de data e hora no SQL Server 2008.
Eu quero selecionar apenas as linhas da tabela"Plane_Allocation_Table" onde a coluna "To_Date" que é do tipo DATETIME é menor que a data e hora de hoje (que obtive usando GETDATE ()). E atualizo duas tabelas dependendo dos valores que a consulta acima retorna.
No entanto, as consultas que tentei não retornam nenhuma linha.
O último procedimento armazenado que desejei se parece com:
- Procedimento para atualizar Total_Allocation em Hanger_Details e Validade de reserva em Plane_Allocation_Details:
CREATE PROCEDURE [dbo].[Update_Total_Allocation_APMS]
AS
DECLARE @now DATETIME
SELECT @now = GETDATE()
UPDATE Hanger_Details
SET Total_Allocation = Total_Allocation - 1
WHERE Hanger_Number IN
(
SELECT Hanger_Number
FROM Plane_Allocation_Details
WHERE To_Date <= @now AND Validity = "Valid"
)
UPDATE Plane_Allocation_Details
SET Validity = "Not Valid"
WHERE To_Date <= @now
A comparação de "To_Date" e "@now" não está funcionando. Existe alguma solução para comparar valores de data e hora de uma tabela em um procedimento armazenado?
PS:Observe que desejo fazer a comparação com base na data e também na hora. Por exemplo, se a data / hora for "2014-12-20 10: 00: 00.000" agora e o valor da coluna for "2014-12-20 09: 59: 00.000", a linha deve ser retornada.
Edit1: Corrigi o erro de digitação aqui. (= <Para <=)
Respostas:
0 para resposta № 1Você pode transmitir o datetime
valores para date
-apenas valores.
por exemplo.
DECLARE @today date
SELECT @today = CONVERT(date, GETDATE())
UPDATE Plane_Allocation_Details
SET Validity = "Not Valid"
WHERE CONVERT(date, To_Date) <= @today