比较 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 :我已经纠正了那里的错别字。(=<到><=(到>
可以将datetime
值强制转换为仅date
值。
例如
DECLARE @today date
SELECT @today = CONVERT(date, GETDATE())
UPDATE Plane_Allocation_Details
SET Validity = 'Not Valid'
WHERE CONVERT(date, To_Date) <= @today