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条记录.
只需按条件将日期定为主要订单:
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之前.
| 归档时间: |
|
| 查看次数: |
522 次 |
| 最近记录: |