繁体   English   中英

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

[英]Comparing datetime values in SQL server 2008

我在比较SQL Server 2008中的日期时间值时面临一个挑战。

我只想从表“ Plane_Allocation_Table”中选择那些行,其中DATETIME类型的“ To_Date”列小于今天的日期和时间(我使用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:请注意,我想根据日期和时间进行比较。 例如,如果现在时间datetime为'2014-12-20 10:00:00.000',并且列值为'2014-12-20 09:59:00.000',则必须返回该行。

Edit1:我已经纠正了那里的错字。 (= <至<=)

您可以将datetime值转换为only date值。

例如

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM