На днях была необходимость перемешать посты в базе по дате. Нашел следующий скрипт на просторах интернета:
CREATE FUNCTION [GenerateRandomDateTime]
(
@StartDate DateTime,
@EndDate DATETIME
)
RETURNS DATETIME
AS BEGIN
--DECLARE VARIABLES
DECLARE @RandomDateTime DATETIME
DECLARE @RandomNumber FLOAT
DECLARE @IntervalInDays INT ;
SET @IntervalInDays = CONVERT(INT, @EndDate - @StartDate)
SET @RandomNumber = ( SELECT [RandNumber]
FROM [RandNumberView]
)
SELECT @RandomDateTime = DATEADD(ss, @RandomNumber * 86400,
DATEADD(dd,
@RandomNumber * @IntervalInDays,
@StartDate))
RETURN @RandomDateTime
END
GO
CREATE VIEW [RandNumberView]
AS SELECT RAND() AS [RandNumber]
GO
Пример использования:
select dbo.[GenerateRandomDateTime]('2011-01-01','2013-01-01')
Хороших и быстрых вам скриптов :)