2016-10-31 2 views
-1

요일과 요일에 대한 타임 스탬프를 얻으려면 다음을 수행하십시오.요일과 요일에 대한 타임 스탬프 얻기

 

    SET @currentTimestamp = DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE()); 
    SET @currentDate = DATEADD(s, @currentTimestamp, '19700101'); 
    SET @currentWeek = DATEPART(wk, @currentDate); 
    SET @starter = 1451654325; 
    SET @weekSize = 604800; 
    SET @beginOfWeek = @starter + ((@weekSize) * (@currentWeek - 2)); 
    SET @endOfWeek = @starter + ((@weekSize) * (@currentWeek - 1)); 

이 같은 쿼리의 미래를 위해 필요하다 ... 현재 주간의 일환으로 뭔가를하고 들어

 

    Submit_Date BETWEEN @beginOfWeek AND @endOfWeek 

.

코드를 좀 더 우아하고 아름답게 만들 수 있습니까?

당신은 BETWEEEN 상태에서 직접이 서브 쿼리의 결과를 사용할 수 있습니다
+2

http://stackoverflow.com/questions/12422248/previous-monday-previous-sundays-date-based -on-todays-date –

+0

이것은 아마도 http://codereview.stackexchange.com에 더 적합 할 것입니다. – Brandon

답변

0

: 우리는 시간 부분을 절단하는 CAST(... AS DATE)를 사용하여 여기에

SELECT LastSunday, DATEADD(dd, -7, LastSunday) AS SundayBeforeThat 
FROM (SELECT CAST(GETUTCDATE() - DATEPART(dw, GETUTCDATE()) + 1 AS DATE) AS LastSunday) A 
  • ;
  • 마지막 일요일에 얻을공제;
  • DATEADD(dd, -7, LastSunday) 음수로 1 주일 뒤로 이동하십시오.

사실, 난 것 아마 INNER JOIN이 하위 쿼리 ON Submit_Date < LastSunday AND Submit_Date >= SundayBeforeThat 필터링 대상 쿼리

... 
INNER JOIN (
     SELECT CAST(GETUTCDATE() - DATEPART(dw, GETUTCDATE()) + 1 AS DATE) AS LastSunday 
    ) w 
ON Submit_Date >= DATEADD(dd, -7, w.LastSunday) 
AND Submit_Date < w.LastSunday