在 Access SQL 中随机选择上周的一天



我正在尝试在 Access 中构建一个如下所示的查询:

SELECT * 
FROM my_table
WHERE date_column BETWEEN X AND Y

我希望 X 是上周早上 6 点的随机一天和第二天早上 6 点的 Y。

我知道我可以做到:

WHERE date_column Between DateAdd('ww',DateDiff('ww',7,Date()),0)-6 And DateAdd('ww',DateDiff('ww',7,Date()),6)-6))

获取上周的所有数据,但是我如何仅针对上周的随机一天进行访问?

谢谢!

DECLARE @x AS DATETIME
DECLARE @y AS DATETIME
DECLARE @randomday AS INT
SET @randomday = ABS(Checksum(NewID()) %6) 
SET @x = LEFT(CONVERT(nvarchar, DATEADD(DAY, -@randomday, GETDATE()), 120), 11) + N'06:00:00'
SET @y = DateAdd(day,1, @x)
SELECT * 
FROM my_table
WHERE date_column BETWEEN @x AND @y

在 Access 查询中,您可以使用 VBA 函数,因此这应该为您提供所需的内容:DateAdd('ww',DateDiff('ww',7,Date()),0)-Round(6*Rnd())

与您的解决方案的不同之处在于,您可以将其减少到 Round(6*Rnd()),而不是 -6 天。Rnd 返回数字>=0 和 <1。然后您需要将其乘以最大间隙并四舍五入才能得到整数。

最新更新