Mssql DATEPART 특정 날짜 요일 검색
date_test 테이블에서 특정 요일만 검색해야 하는 경우, 동적으로 요일 조건을 처리하는 방법은 다양합니다. 다음은 몇 가지 일반적인 접근 방식과 예시 코드입니다.
예제 실행을 위해 데이터를 아래 링크에서 참조하시면 됩니다.
2025.03.22 - [db/mssql] - [Mssql] 1년 날짜 입력
[Mssql] 1년 날짜 입력
Mssql 1년 날짜 입력Mssql 1년 날짜 INSERT Mssql 연속 날짜 INSERT 테이블에 연속 날짜를 insert 하는 방법입니다.테이블 생성CREATE TABLE date_test( [num] [int] IDENTITY(1,1) NOT NULL, [sdd] [date] NULL, CONSTRAINT [PK_date_tes
st-d.tistory.com
DATEPART(weekday, sdd) 함수 사용
DATEPART(weekday, sdd) 함수는 sdd 열의 날짜에서 요일을 추출합니다. 반환되는 값은 DATEFIRST 설정에 따라 1부터 7까지의 숫자입니다. (기본값: 1=일요일, 7=토요일)
DECLARE @dayOfWeek INT = 3; -- 수요일 (3)
SELECT *
FROM date_test
WHERE DATEPART(weekday, sdd) = @dayOfWeek;
요일 목록을 문자열로 전달하고 STRING_SPLIT 함수 사용 (SQL Server 2016 이상)
쉼표로 구분된 요일 목록을 문자열로 전달하고 STRING_SPLIT 함수를 사용하여 각 요일을 분리한 다음, IN 절에서 요일 목록을 사용할 수 있습니다.
DECLARE @daysOfWeek VARCHAR(50) = '2,4,6'; -- 월, 수, 금
SELECT *
FROM date_test
WHERE DATEPART(weekday, sdd) IN (SELECT value FROM STRING_SPLIT(@daysOfWeek, ','));
요일 목록을 테이블 변수로 전달
요일 목록을 테이블 변수에 저장하고 IN 절에서 테이블 변수를 사용할 수 있습니다.
DECLARE @daysOfWeek TABLE (dayOfWeek INT);
INSERT INTO @daysOfWeek (dayOfWeek) VALUES (2), (4), (6); -- 월, 수, 금
SELECT *
FROM date_test
WHERE DATEPART(weekday, sdd) IN (SELECT dayOfWeek FROM @daysOfWeek);
동적 SQL 사용
요일 목록을 동적으로 생성하고, 동적 SQL을 실행하여 쿼리를 수행할 수 있습니다.
DECLARE @daysOfWeek VARCHAR(50) = '2,4,6'; -- 월, 수, 금
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'SELECT * FROM date_test WHERE DATEPART(weekday, sdd) IN (' + @daysOfWeek + N')';
EXEC sp_executesql @sql;
JSON 데이터 사용
JSON을 이용한 검색( 1:일, 2:월, 5:목 )
DECLARE @json NVARCHAR(MAX);
SET @json = N'{
"days": [
1,2,5
]
}';
-- 1:일, 2:월, 5:목
SELECT A.* FROM date_test AS A
INNER JOIN OPENJSON(JSON_QUERY(@json, '$.days')) AS B
ON DATEPART(WEEKDAY, A.sdd) = B.value
order by sdd;
JSON 파싱은 아래 링크에서 참조하시면 됩니다.
2025.03.22 - [db/mssql] - [Mssql] Json 파싱
[Mssql] Json 파싱
Mssql Json 파싱MS SQL JSON 파싱MS SQL Server에서 JSON 데이터를 파싱 하는 방법은 SQL Server 2016 버전부터 지원하는 내장 JSON 함수를 사용하는 것입니다. 다음은 MS SQL Server에서 JSON 데이터
st-d.tistory.com
'db > mssql' 카테고리의 다른 글
mssql 기본 키 없는 테이블 조회 (0) | 2025.04.13 |
---|---|
mssql sys.tables (0) | 2025.04.13 |
[Mssql] 1년 날짜 입력 (0) | 2025.03.22 |
[Mssql] JSON_MODIFY 추가, 수정 (0) | 2025.03.22 |
[Mssql] Json 파싱 (0) | 2025.03.22 |