SQL-Quick совет #15 — Случайные даты


Советы и подсказки по Sql Server

Это часть серии быстрых советов и подсказок, которые я накопил за год и которые, как мне кажется, могут быть полезны другим.
Если у вас есть похожие короткие советы и рекомендации, пожалуйста, оставьте комментарий.

Случайная дата

Это простой, но полезный совет, который я использовал много раз, работая над различными проектами, где мне нужны были тестовые данные, которые должны были содержать случайные даты.
Приведенный ниже сценарий показывает, как можно генерировать случайные даты. Вы можете объединить этот совет с советом SQL-Quick #5 — Создание последовательности даты и времени.

SELECT DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 365), CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR(4)) + '-01-01') AS [Random date], 'Random date in the current year' AS Comment
UNION
SELECT DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 365), '2000-01-01'), 'Random date in the specific year'
UNION
SELECT DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 3650), '2000-01-01'), 'Random date between 2000-01-01 and 2010-01-01'
UNION
SELECT DATEADD(DAY, (ABS(CHECKSUM(NEWID())) % 65530), 0), 'Random date between 1900-01-01 and 2079-06-06'
Войдите в полноэкранный режим Выйти из полноэкранного режима

Приведенный ниже сценарий создаст последовательность дат и времени с интервалом в 30 минут в течение 2 дней от случайной начальной даты

DECLARE @stepSizeInMinutes INT = 30; -- Change this line to change the time interval
DECLARE @from DATETIME2 = DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 365), CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR(4)) + '-01-01');
DECLARE @to DATETIME2 = DATEADD(DAY, 2, @from);
-- Create Recursive Discrete Table
WITH Recursive_CTE AS
(
       SELECT @from AS TimestampUtc
        UNION ALL
       SELECT DATEADD(MINUTE, @stepSizeInMinutes, TimestampUtc) 
         FROM Recursive_CTE
        WHERE TimestampUtc < @to
)
SELECT *
  FROM Recursive_CTE
 ORDER BY TimestampUtc
OPTION (MAXRECURSION 0);
Войти в полноэкранный режим Выйти из полноэкранного режима

Оцените статью
Procodings.ru
Добавить комментарий