SQL Server 2008 で日時の値を比較する際に問題に直面しています。
テーブル 'Plane_Allocation_Table' から、DATETIME 型の列 'To_Date' が今日の日付と時刻 (GETDATE() を使用して取得) よりも小さい行のみを選択したいと考えています。上記のクエリが返す値に応じて、2 つのテーブルを更新します。
ただし、私が試したクエリは行を返しません。
私が書いた最後のストアド プロシージャは次のようになります。
-- 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」の場合、行を返す必要があります。
Edit1 : タイプミスを修正しました。(=< ~ <=)