![](/img/trans.png)
[英]to get records between yesterday's 3pm to today's 3pm sql server
[英]Sql Server 2005: Today's random records
我可以很容易地得到一个随机记录:
SELECT * FROM MyTable ORDER BY NewId()
我可以很容易地获得带有“今天的日期”的记录:
SELECT * FROM MyTable WHERE MyDate = "2010-24-08" -- db doesn't store times
但是我将如何结合两者呢?
随机获取1条记录...今天的日期。
如果没有找到...从昨天(今天-1)获得1条随机记录。
如果没有找到...从etc等今天1中获得1条随机记录
...直到找到1条记录。
只需按条件将日期设为主要订单即可:
select top(1) *
from Table
order by Date desc, newid();
如果存储日期为全天和时间,你需要舍出来,只一天的时段: cast (Date as DATE)
在SQL 2008或cast(floor(cast(Date as FLOAT)) as DATETIME)
在预2008。
使用TOP运算符 :
SELECT TOP 1 *
FROM MyTable
WHERE MyDate = "2010-24-08"
ORDER BY NEWID()
...与ORDER BY NEWID()
。 如果没有ORDER BY,通常在大多数情况下,您将获得过滤返回的记录的第一个插入行/记录,但是确保顺序的唯一方法是使用ORDER BY
子句。
SQL Server 2005+支持在TOP值上使用方括号,因此您可以在方括号中使用变量,而无需使用动态SQL。
这会给您您想要的吗?
SELECT TOP 1 *
FROM MyTable
ORDER BY MyDate desc, NewId()
假设没有日期晚于今天。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.