[SQL] 어떻게 SQL에서 지난 주 마지막 날을 얻으려면?
SQL어떻게 SQL에서 지난 주 마지막 날을 얻으려면?
어떻게 SQL에서 지난 주 마지막 날짜를 얻으려면? 나는 쿼리를 사용하여 지난 일요일 날짜를 의미?
해결법
-
==============================
1.에 관계없이 실제 DATEFIRST 설정, 마지막 일요일은 다음과 같이 볼 수 있습니다 :
에 관계없이 실제 DATEFIRST 설정, 마지막 일요일은 다음과 같이 볼 수 있습니다 :
SELECT DATEADD(day, -1 - (DATEPART(weekday, GETDATE()) + @@DATEFIRST - 2) % 7, GETDATE() ) AS LastSunday
특정 날짜 이전에 마지막 일요일을 얻을 수있는 매개 변수 @date로 GETDATE ()를 교체합니다.
-
==============================
2.( "지난 주"의 끝) 마지막 일요일
( "지난 주"의 끝) 마지막 일요일
SELECT DATEADD(wk, DATEDIFF(wk, 6, CURRENT_TIMESTAMP), 6) AS LAST_SUNDAY
이번 주 (가정 월 - 일 주 형식)
SELECT DATEADD(wk, DATEDIFF(wk, 7, CURRENT_TIMESTAMP), 7) AS START_OF_WEEK SELECT DATEADD(wk, DATEDIFF(wk, 6, CURRENT_TIMESTAMP), 6 + 7) AS END_OF_WEEK
결과
START_OF_WEEK ----------------------- 2011-05-02 00:00:00.000 END_OF_WEEK ----------------------- 2011-05-08 00:00:00.000
예 부두 설명하기 위해 (시작 및 주가 종료 원하는 주에 SQL 위의 변화에 대한 사용이 요일)
다음은 SQL
SELECT DATEADD(wk, DATEDIFF(wk, -2, CURRENT_TIMESTAMP), -2) AS DAY_OF_WEEK /* Saturday */ SELECT DATEADD(wk, DATEDIFF(wk, -1, CURRENT_TIMESTAMP), -1) AS DAY_OF_WEEK /* Sunday */ SELECT DATEADD(wk, DATEDIFF(wk, 0, CURRENT_TIMESTAMP), 0) AS DAY_OF_WEEK /* Monday */ SELECT DATEADD(wk, DATEDIFF(wk, 1, CURRENT_TIMESTAMP), 1) AS DAY_OF_WEEK /* Tuesday */ SELECT DATEADD(wk, DATEDIFF(wk, 2, CURRENT_TIMESTAMP), 2) AS DAY_OF_WEEK /* Wednesday */ SELECT DATEADD(wk, DATEDIFF(wk, 3, CURRENT_TIMESTAMP), 3) AS DAY_OF_WEEK /* Thursday */ SELECT DATEADD(wk, DATEDIFF(wk, 4, CURRENT_TIMESTAMP), 4) AS DAY_OF_WEEK /* Friday */ SELECT DATEADD(wk, DATEDIFF(wk, 5, CURRENT_TIMESTAMP), 5) AS DAY_OF_WEEK /* Saturday */ SELECT DATEADD(wk, DATEDIFF(wk, 6, CURRENT_TIMESTAMP), 6) AS DAY_OF_WEEK /* Sunday */ SELECT DATEADD(wk, DATEDIFF(wk, 7, CURRENT_TIMESTAMP), 7) AS DAY_OF_WEEK /* Monday */ SELECT DATEADD(wk, DATEDIFF(wk, 8, CURRENT_TIMESTAMP), 8) AS DAY_OF_WEEK /* Tuesday */ SELECT DATEADD(wk, DATEDIFF(wk, 9, CURRENT_TIMESTAMP), 9) AS DAY_OF_WEEK /* Wednesday */ SELECT DATEADD(wk, DATEDIFF(wk, 10, CURRENT_TIMESTAMP), 10) AS DAY_OF_WEEK /* Thursday */ SELECT DATEADD(wk, DATEDIFF(wk, 11, CURRENT_TIMESTAMP), 11) AS DAY_OF_WEEK /* Friday */ SELECT DATEADD(wk, DATEDIFF(wk, 12, CURRENT_TIMESTAMP), 12) AS DAY_OF_WEEK /* Saturday */ etc...
-
==============================
3.다음은이 작업을 수행하는 방법에 대한 좋은 기사입니다 :
다음은이 작업을 수행하는 방법에 대한 좋은 기사입니다 :
http://www.objectreference.net/post/SQL-Find-last-week-date-range.aspx
당신은 @StartOfPrevWeek 변수를 사용하고자하는 것입니다.
-
==============================
4.
DECLARE @LastSunday DATETIME -- This will get the previous Sunday with time as 23:59:59 SELECT @LastSunday = Dateadd(SECOND, -1, Dateadd(WK, Datediff(WK, 6, CURRENT_TIMESTAMP) , 7)) SELECT @LastSunday -- This gets the monday prior to it and time of 00:00:00 SELECT Dateadd(SECOND, 1, Dateadd(DAY, -7, @LastSunday)) -- This will make you time spans between eg, Monday 16/07/2012 00:00:00 through to Sunday 22/07/2012 23:59:59 -- Then use them in your WHERE clause like this -- SELECT X,Y,Z From SomeTable -- WHERE DateField BETWEEN @PreviousMondayToLastSunday AND @LastSunday
-
==============================
5.오늘이 일요일 인 경우 이전 일요일, 또는 오늘을 얻으려면,이 시도
오늘이 일요일 인 경우 이전 일요일, 또는 오늘을 얻으려면,이 시도
DATEADD(day,- (DATEPART(dw,getdate()) + @@DATEFIRST -1) % 7, getdate())
-
==============================
6.는 SQL은 적절한 달력 테이블에 더 간단합니다. 어떤 부두 없습니다.
는 SQL은 적절한 달력 테이블에 더 간단합니다. 어떤 부두 없습니다.
select max(cal_date) end_of_last_week from calendar where (cal_date < current_date and day_of_week = 'Sun'); end_of_last_week -- 2011-05-01
-
==============================
7.
SELECT (DATEADD(DAY, ((DATEPART(dw, @Date) - 1) * -1), @Date))
-
==============================
8.이것은 주어진 날짜와 시간에서 당신에게 다음 및 이전 금요일을 얻을 것이다
이것은 주어진 날짜와 시간에서 당신에게 다음 및 이전 금요일을 얻을 것이다
DECLARE @PREVIOUS int, @dtmStart datetime,@dtmEnd datetime, @NEXT int; SET @dtmStart = '12/10/2013'; SET @dtmEnd = '12/11/2013'; select @PREVIOUS = datepart(dw,@dtmStart) WHILE @PREVIOUS <> 6 BEGIN SET @dtmStart = DATEADD(day , -1 ,@dtmStart) SET @PREVIOUS = datepart(dw,@dtmStart) CONTINUE END select @dtmStart SELECT @NEXT = DATEPART(dw, @dtmEnd) WHILE @NEXT <> 6 BEGIN SET @dtmEnd = DATEADD(day , 1 ,@dtmEnd) SET @NEXT = datepart(dw,@dtmEnd) CONTINUE END select @dtmEnd
-
==============================
9.여기에 지난 토요일의 날짜를 얻을 수있는 코드입니다. 이 방법은 데이터베이스의 설정과 무관합니다.
여기에 지난 토요일의 날짜를 얻을 수있는 코드입니다. 이 방법은 데이터베이스의 설정과 무관합니다.
declare @lastSaturday date, @today date, @todayName varchar(20); select @todayName = datename(weekday, getdate()), @today = getdate(); select case @todayName when 'Saturday' then @today when 'Sunday' then dateadd(day,-1,@today) when 'Monday' then dateadd(day,-2,@today) when 'Tuesday' then dateadd(day,-3,@today) when 'Wednesday' then dateadd(day,-4,@today) when 'Thursday' then dateadd(day,-5,@today) when 'Friday' then dateadd(day,-6,@today) end as LastSaturday;
-
==============================
10.
SET @EndDate = GETDATE()-DatePart(dw, GETDATE());
from https://stackoverflow.com/questions/5924777/how-to-get-last-day-of-last-week-in-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] "- 제로 행이 페치 선택 또는 처리 된 데이터 없음 오류 1329"어떻게이 제거되지하세요 (0) | 2020.05.25 |
---|---|
[SQL] SHOW ALL은 두 날짜 사이의 데이터를 날짜; 어떤 행이 특정 날짜에 대해 존재하지 않는 경우 모든 열이 제로를 표시 (0) | 2020.05.25 |
[SQL] SQL에 소계 행을 추가하는 방법 [마감] (0) | 2020.05.25 |
[SQL] 어떻게 하나 개의 레코드에 SQL에 널 (null) 값으로 모든 필드를 계산하려면? (0) | 2020.05.25 |
[SQL] 분할 문자열 행 오라클 SQL로 (0) | 2020.05.24 |