比较SQL Server 2008中的日期时间值

时间:2014-12-02 05:24:21

标签: c# sql-server sql-server-2008 datetime datetime-comparison

我在比较SQL Server 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

&#39; To_Date&#39;和&#39; @ now&#39;不工作。是否有任何解决方案来比较存储过程中的表的日期时间值?

PS:请注意我想根据日期和时间进行比较。例如,如果时间日期时间是&#39; 2014-12-20 10:00:00.000&#39;现在,列值是&#39; 2014-12-20 09:59:00.000&#39;然后必须返回该行。

编辑1:我已经纠正了那里的拼写错误。 (=&lt; to&lt; =)

1 个答案:

答案 0 :(得分:0)

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

e.g。

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

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