본문 바로가기
DataBase/MS-SQL

[MS-SQL] RAND 함수 활용하여 랜덤 일자(날짜), 시간 생성하기

by 너울림 2023. 2. 8.

 

RAND 함수 활용하여 랜덤 일자(날짜), 시간 생성하기


포스팅 개요


Query를 작성하다 보면 난수(Rand)를 생성하는 함수를 활용하여 작업할 경우가 많습니다. 오늘은 간단한 최소~최대 구간별 난수 생성 방법과 기준 일자 또는 기준 시간을 기점으로 랜덤 일자, 시간을 생성하는 방법에 대해 알아보겠습니다.


예제 쿼리


예제1. 최소 ~ 최대 구간별 난수 생성 방법입니다.

DECLARE @R_Min     INT, -- 최소 수치
        @R_Max     INT  -- 최대 수치
 
-- 변수 설정
SET @R_Min = 1
SET @R_Max = 100
 
-- 구간별 난수 생성
SELECT CAST(((@R_Max + 1) - @R_Min) * RAND() + @R_Min AS INT)

예제1 결과

 

예제2. 기준 일자 이후 랜덤 일자(날짜) 생성 방법입니다.

DECLARE @R_Min      INT,	-- 최소 일
        @R_Max      INT,	-- 최대 일
        @R_Date     DATE	-- 기준 일
 
-- 변수 설정
SET @R_Min = 30
SET @R_Max = 90
SET @R_Date = '2023-02-01'
 
-- 기준일 이후 30일부터 90일까지 랜덤 일자 생성
SELECT @R_Date, DATEADD(d, CAST(((@R_Max + 1) - @R_Min) * RAND() + @R_Min AS INT), @R_Date)

예제2 결과

 

예제3. 기준 시간 이후 랜덤 시간 생성 방법입니다.

DECLARE @R_Min      INT,	-- 최소 시간
        @R_Max      INT,	-- 최대 시간
        @R_Time     DATETIME -- 기준 시간
 
-- 변수 설정
SET @R_Min = 900 --15분x60초
SET @R_Max = 3600 --60분x60초
SET @R_Time = '2023-02-01 09:00:00'
 
-- 기준 시간 이후 15분부터 60분 사이의 랜덤 시간 생성
SELECT @R_Time, DATEADD(s, CAST(((@R_Max + 1) - @R_Min) * RAND() + @R_Min AS INT), @R_Time)

예제3 결과

 

반응형

참고 링크

 

SQL문서 - RAND 함수

 

RAND(Transact-SQL) - SQL Server

RAND(Transact-SQL)

learn.microsoft.com

SQL문서 - DATEADD 함수

 

DATEADD(Transact-SQL) - SQL Server

DATEADD 함수의 Transact-SQL 참조입니다. 이 함수는 지정된 날짜 부분에서 수정된 날짜를 반환합니다.

learn.microsoft.com

SQL문서 - 날짜 및 시간 형식

 

날짜 및 시간 형식 - SQL Server

날짜 및 시간 형식

learn.microsoft.com

SQL문서 - CAST 및 CONVERT

 

CAST 및 CONVERT(Transact-SQL) - SQL Server

CAST 및 CONVERT 함수의 Transact-SQL 참조입니다. 해당 함수는 특정 데이터 형식의 식을 다른 데이터 형식으로 변환합니다.

learn.microsoft.com

 

댓글