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

本文关键字:日期 时间 SQL Server 2008 比较 | 更新日期: 2023-09-27 18:32:40

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

编辑1 :我已经纠正了那里的错别字。(=<到><=(

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

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

例如

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