[英]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.