2012-12-01 3 views
1

내 테이블에 매일 온도 측정에 관한 분 데이터가 있습니다. 나는 일정한 시간 간격 사이에 다른 날짜에 온도를 가지고 만 오전 7시 오후 8시 사이의 온도를 보여 드리고자합니다T-SQL 특정 시간 사이에 여러 날의 데이터 선택

DateTime timestamp, Float temperature 

: 같은 테이블이 보인다.

나는 날짜 사이의 데이터를 얻을하는 방법을 알고 :

SELECT [timestamp],[temperature] 
    FROM [meteo_data] 
    WHERE [timestamp] BETWEEN '2012-11-10' and '2012-11-17' 

가 어떻게 시간 제한 (오전 7시부터 오후 8시까지)를 구현하는 데뿐만 아니라?

감사합니다.

답변

4

, 당신은 TIME datatype

SELECT [timestamp],[temperature] 
FROM [meteo_data] 
WHERE [timestamp] BETWEEN '2012-11-10' and '2012-11-17' 
AND CONVERT(TIME,[timestamp]) BETWEEN '19:00:00' AND '20:00:00' 

EDIT를 사용할 수 있습니다 또한 문자열로 날짜를 사용하는 경우 ISO (yyyymmdd) 날짜 형식을 사용하는 것이 좋습니다. 즉

BETWEEN '20121110' and '20121117' 
1

날짜 시간 및 타임 스탬프 값은 당신이 필요로하는 정밀, 당신은 당신이 당신의 데이터베이스의 정확도에 따라 RIGHT 조건에서 평가하고 얼마나 많은 문자를 조정해야 할 수도 있으므로

SELECT [timestamp],[temperature] 
FROM [meteo_data] 
WHERE [timestamp] BETWEEN '2012-11-10' and '2012-11-17' 
AND RIGHT([timestamp], 12) BETWEEN '19:00:00.000' AND '20:00.00.000' 

을 포함해야합니다. 그러나 아이디어는 시간, 분, 초 및 밀리 초를 구성하는 모든 부분을 취하여 필요한 시간 사이의 시간으로 제한하는 것입니다. 당신이 SQL Server 2008 or above에있는 경우

+0

안녕하세요, Simon, 감사합니다. 나는 아이디어를 얻지 만 작동하지 않는 것 같습니다. 마지막 줄을 포함하면 아무 것도 얻을 수 없어요. – Enrico

+0

알았어요, 바로 돌아올거야 folloiwng : [2012 6:26 PM], 지금은 해결할 수있을 것 같아. – Enrico

+0

위대한, 그것은 거의 그때 거기에있는 것 같은데. 11 개의 문자가있는 것처럼 보입니다. 12 개의 문자가 아닌 것으로 보입니다. 마지막 절을 11로 변경하면 올바른 데이터가 반환됩니까? –

관련 문제