Sql Server 2005:今天的随机记录

Hel*_*enJ 1 sql sql-server random sql-server-2005 newid

我可以很容易地得到一个随机记录:

SELECT *    FROM MyTable    ORDER BY NewId() 
Run Code Online (Sandbox Code Playgroud)

我可以很容易地用"今天的日期"记录下来:

SELECT *    FROM MyTable    WHERE MyDate = "2010-24-08"  -- db doesn't store times
Run Code Online (Sandbox Code Playgroud)

但我怎么把两者结合起来呢?

得到1个随机记录......今天的日期.

如果没有找到...从昨天(今天 - 1)获得1个随机记录.

如果没有找到...从等等获得1个随机记录,今天-2

...直到找到1条记录.

Rem*_*anu 6

只需按条件将日期定为主要订单:

select top(1) *
from Table
order by Date desc, newid();
Run Code Online (Sandbox Code Playgroud)

如果将日期存储为全天时间,则需要将它们四舍五入到日期部分:cast (Date as DATE)在SQL 2008或cast(floor(cast(Date as FLOAT)) as DATETIME)2008之前.