2014-12-02 83 views
0

我面对的一个挑战,在SQL服务器比较datetime值2008比较datetime值2008

我只想选择从表“Plane_Allocation_Table”,其中列“TO_DATE”,这是那些行类型DATETIME小于今天的日期和时间(我使用GETDATE()获得)。根据上述查询返回的值更新两个表。

但是,我试过的查询没有返回任何行。

最后一个存储过程我又写道看起来像:

- 程序更新Hanger_Details Total_Allocation和有效性预订在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 

'TO_DATE' 和 '@now' 的比较不工作。有没有比较存储过程中的表中的日期时间值的解决方案?

PS:请注意,我想根据日期和时间进行比较。例如,如果时间日期时间现在为'2014-12-20 10:00:00.000',并且列值为'2014-12-20 09:59:00.000',则必须返回该行。

编辑1:我纠正了那里的错字。 (= <到< =)

+1

什么是“= <”...? – 2014-12-02 05:30:47

+0

除可能的错字外。我会认为你做得很好。你想再次检查一切吗?也许再次检查To_Date的类型? – stripathi 2014-12-02 05:39:46

+1

To_Date的数据类型是什么 – Veera 2014-12-02 05:42:27

回答

0

您可以将datetime值强制转换为date - 仅限值。

例如

DECLARE @today date 
SELECT @today = CONVERT(date, GETDATE()) 

UPDATE Plane_Allocation_Details 
SET Validity = 'Not Valid' 
WHERE CONVERT(date, To_Date) <= @today 
+0

谢谢,这个作品。但是,我实际上需要根据当前时间进行比较。 – kev 2014-12-02 06:33:47