SQL Server:如何按日期排序,如果日期是< GETDATE()

时间:2009-11-30 05:03:08

标签: sql sql-server datetime full-text-search sql-order-by

这是一个有趣的...希望我能解释清楚......

我在SQL Server数据库的单个表中有一组竞赛。我正在对它们进行全文搜索,效果很好。然而,一些比赛已经结束,我希望这些封闭的比赛在公开比赛后出现,同时仍然尊重我们从全文搜索中得到的等级。

所以,如果我有一个IsOpen位,我会按

命令
ORDER BY IsOpen DESC, KEY_TBL.Rank DESC

现在问题是我没有IsOpen位字段。相反,我有一个ClosedDate字段,这是一个日期时间。

所以我真正需要做的是:

ORDER BY (ClosingDate < GetDate()) ASC, KEY_TBL.Rank DESC

任何人都知道怎么做?

任何想法都会很棒!提前谢谢。

-ev

2 个答案:

答案 0 :(得分:2)

将(ClosingDate&lt; GetDate())添加到SELECTed字段并按该字段排序

select ... , add (ClosingDate < GetDate()) as Foo
from ...
where ...
order by foo

可能添加(ClosingDate&lt; GetDate())将不被接受,那么你将不得不使用      IF(add(ClosingDate&lt; GetDate()); 1; 0)

我不知道IF函数的语法,请查阅!

答案 1 :(得分:2)

ORDER BY
  CASE
    WHEN (ClosingDate < GetDate())
    THEN 1
    ELSE 0
  END ASC,
  KEY_TBL.Rank DESC