2011-02-05 1 views
1

MS SQL에서 주, 시간 및 시간의 시작 및 끝 요일을 포함하는 행 테이블이 있습니다. GETDATE가 요일과 시간과 일치하는 테이블에서 행을 가져올 수있는 T-SQL 쿼리가 필요합니다. 특히 행에 일주일에 시작하여 다음 날에 끝나는 요일/시간이있는 경우 쿼리가 필요합니다.SQL 서버에서 요일과 시간 사이에 속하는 행을 찾습니다.

_start_day_of_week (INT) = 5
_start_hour (INT) = 15
_start_minute (INT) = 30
_end_day_of_week (INT) = 6
_end_hour (INT) : 여기

내가 작업있어 구조의 = 2
_end_minute (INT) = 30
_title (문자열) = '내 샘플 행'
_id (INT) =

일이 어떻게 현재의 DATETIME에 대해,이 행을 검색 할?

+0

테이블 DDL, 일부 샘플 데이터 및 예상 결과를 게시 할 수 있습니까? 귀사의 요구 사항을 이해하는 데 도움이됩니다. –

+0

물론, 테이블 구조에 대해 좀 더 자세히 설명했습니다. @Robert Kaucher @Victor – Corgalore

답변

0

당신이 뭔가를 시도 할 수 :

select * from [yourtable] 
where yourdatefield between getDate() and (getDate()+1) 
0
당신은 getdate 기능을 갈 datepart 기능을 사용할 수 있어야합니다

:

http://msdn.microsoft.com/en-us/library/aa258265%28v=sql.80%29.aspx

+0

그는 datetime 데이터 유형을 가지고 있다고 가정합니다. 그것은 분명하지 않다. OP는 date가 아닌 day라는 용어를 계속 사용하기 때문에 테이블 구조가 궁금합니다. –

+0

미안하지만, limic. 나는 너의 표류를 지금 잡는다. –

0

나는 그들이 보인다 귀하의 요구 사항에 대한 불분명 해요 약간 impracticle. 그러나 여기에 내 갈망이있다.

DECLARE @A AS TABLE(
_start_day_of_week int, 
_start_hour int, 
_start_minute int, 
_end_day_of_week int, 
_end_hour int, 
_end_minute int, 
_title varchar(10), 
_id int 
) 
--Above is temp table for example 
INSERT @A 
SELECT 5,15,30,6,2,30,'SAMPLE 1', 1 UNION ALL 
SELECT 6,15,30,6,17,30,'SAMPLE 2', 2 

DECLARE @month int = datepart(month,getdate()) 
DECLARE @currentDay int = datepart(dw,getdate()) 
DECLARE @currentHour int = datepart(hour, getdate()) 
DECLARE @currentMinute int = datepart(minute, getdate()) 



SELECT * FROM @A --Don't use select *. This is just an example. 
WHERE --Where GETDATE matches 
_start_day_of_week = @currentDay --The day of week 
AND 
_start_hour = @currentHour --and time of those rows 
AND 
_start_minute = @currentMinute 
--I have not done any matching against the _end columns as 
--your criteria are vague. Should it exclude all days except 
--the current day and the currentday+1? 
-- But you would use a similar method. 
+0

글쎄, 내 코드는 여전히 완벽하게 작동하지 않습니다. 문제는 음식/음료 특별 스페셜의 시작일과 종료일/시간/분을 포함하는 많은 레코드를 선택하는 것입니다. 사용자가 페이지를 보는 순간과 같이 현재 활성화되어있는 스페셜을 나타내는 레코드를 식별해야합니다. 때로는 스페셜이 하루에 시작하고 다른 스페셜에서 끝나기 때문에 어려워집니다. 가능한 경우 T-SQL에서이 작업을 수행하려고합니다. @RobertKaucher @ – Corgalore

관련 문제