我在比较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; =)
答案 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