Вы ищете ближайшую дату начала. Вы можете только заказать таблицу, а затем ограничить набор результатов! Проверьте это:
SET DATEFORMAT DMY
DECLARE @t TABLE (
id uniqueidentifier NOT NULL,
startDate datetime NOT NULL,
endDate datetime,
amount decimal(18,8) NOT NULL)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '01.01.2009', NULL, 1.221)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '01.03.2009', NULL, 1.221)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '01.10.2011', NULL, 1.22)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '21.04.2011', NULL, 221)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '11.06.2011', NULL, 199221)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '01.01.2009', NULL, 1221)
SELECT TOP 1 * FROM @t
ORDER BY ABS(DATEDIFF(day, startDate, GETDATE()))