2011-04-28 6 views
1

나는 해당 시간에서 오름차순으로 정렬해야하는 Time 필드가있는 이벤트 데이터베이스를 보유하고 있습니다. 이 이벤트의 "날"은 오후 11시에 시작합니다 (이벤트는 오후 11 시부 터 오후 10시 59 분까지 하루 24 시간 열립니다).SQL Server 시간별 정렬 및 1 시간

12:00 AM 이벤트를 계속하기 전에 결과가 오후 11:00, 오후 11:01, ..., 오후 11:59 이벤트로 시작되도록 내 이벤트를 정렬하는 방법이 있습니까? 예제가 SQL과 LINQ에서 SQL로 제공 될 수 있다면 좋을 것입니다.

편집 : 내 질문의 제목을 설명해야합니다. 내 원래의 생각은 때마다을 정렬하는 동안 한 시간 씩 추가하는 것이지만 반환 된 값은 원래 시간으로 유지됩니다. 이로 인해 오후 11:00 등 모든 이벤트가 오전 12:00 등의 이벤트가되고 다른 모든 이벤트가 한 시간 앞당겨 질 것입니다 (오후 10:59에 마지막 이벤트가 정렬을 위해 오후 11:59에 발생합니다). 이것이 가능한가?

+1

쿼리 할 때 주어진 "요일"의 데이터를 원하십니까? –

+0

예. 이벤트는 매일 반복되므로 하루는 실제로 테이블에 있습니다. – KPthunder

+0

퀴즈의 비트 : 11PM은 고대 중국 시간 관리 (실제로 11PM - 1AM 다음 날은 첫 번째 "시간")에서 자정의 시작입니다. 각각의 고대 중국어 "시간"은 2 서부 "시간"에 매핑됩니다. 고대 중국의 시간을 지키면서 무언가를하고 있는지 궁금해하십니까? –

답변

1

주어진 시간 동안 오름차순으로 정렬하면 오름차순으로 정렬 (시간 + 1 시간)과 동일한 결과가 나타납니다. 상수 값이 각각에 더해질 때 값 집합의 순서는 바뀌지 않습니다 (적어도 & 다른 단순한 경우).

날짜 구성 요소를 그룹화하거나 날짜별로 가져와야합니까? 아마도 당신의 문제는 정렬보다는 (시간 + 1 시간) 그룹화 또는 선택하는 방법입니다.

+0

이벤트는 매일 반복되므로 데이터베이스에 하루 만 이벤트가 있습니다. – KPthunder

0

이 방법이 가장 효율적인 방법인지는 확실하지 않지만 요청한 사항이라고 생각합니다.

declare @theDateYouAreInterestedIn smalldatetime 
-- this gets today's date and subtracts an hour giving you 11:00pm yesterday 
-- if you want it some other date just sub out the Cast(GetDate() as date) for the 
-- desired date 
set @theDateYouAreInterestedIn = Dateadd(hour, -1,Cast(Cast(GetDate() as date) as smalldatetime)) 
select * 
from yourTable 
where yourDateTimeField > @theDateYouAreInterestedIn 
and yourDateTimeField < Dateadd(day, 1,@theDateYouAreInterestedIn) 
order by yourDateTimeField 
관련 문제