I "m čelia výzve v porovnaní dátových hodnôt v SQL Server 2008.
Chcem vybrať len tie riadky z tabuľky"Plane_Allocation_Table", kde stĺpec "To_Date", ktorý je typu DATETIME, je menší ako dnešný dátum a čas (ktorý som získal pomocou služby GETDATE ()) a aktualizuje dve tabuľky v závislosti od hodnôt uvedených vyššie v dotaze.
Dotazy, ktoré som sa snažil, však nevracajú žiadne riadky.
Posledná uložená procedúra vyzerá takto:
- Postup aktualizácie Total_Allocation v Hanger_Details a Platnosť rezervácie v 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
Porovnanie "To_Date" a "@now" isn "t working. Je nejaké riešenie na porovnanie dátových hodnôt z tabuľky v uloženej procedúre?
PS: Upozorňujeme, že chcem vykonať porovnanie na základe dátumu a času. Napríklad, ak čas teraz je "2014-12-20 10: 00: 00.000" a hodnota stĺpca je "2014-12-20 09: 59: 00.000", potom riadok musí byť vrátený.
Edit1: Opravil som preklep tam (= <na <=)
odpovede:
0 pre odpoveď č. 1Môžete obsadiť datetime
hodnoty do date
- hodnoty.
napr.
DECLARE @today date
SELECT @today = CONVERT(date, GETDATE())
UPDATE Plane_Allocation_Details
SET Validity = "Not Valid"
WHERE CONVERT(date, To_Date) <= @today