2014-12-02 120 views
0

我面對的一個挑戰,在SQL服務器比較datetime值2008比較datetime值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 

'TO_DATE' 和 '@now' 的比較不工作。有沒有比較存儲過程中的表中的日期時間值的解決方案?

PS:請注意,我想根據日期和時間進行比較。例如,如果時間日期時間現在爲'2014-12-20 10:00:00.000',並且列值爲'2014-12-20 09:59:00.000',則必須返回該行。

編輯1:我糾正了那裏的錯字。 (= <到< =)

+1

什麼是「= <」...? – 2014-12-02 05:30:47

+0

除可能的錯字外。我會認爲你做得很好。你想再次檢查一切嗎?也許再次檢查To_Date的類型? – stripathi 2014-12-02 05:39:46

+1

To_Date的數據類型是什麼 – Veera 2014-12-02 05:42:27

回答

0

您可以將datetime值強制轉換爲date - 僅限值。

例如

DECLARE @today date 
SELECT @today = CONVERT(date, GETDATE()) 

UPDATE Plane_Allocation_Details 
SET Validity = 'Not Valid' 
WHERE CONVERT(date, To_Date) <= @today 
+0

謝謝,這個作品。但是,我實際上需要根據當前時間進行比較。 – kev 2014-12-02 06:33:47