2011-02-05 38 views
1

我有一個包含星期,小時和時間的開始和結束日期的MS SQL中的行表。我需要一個T-SQL查詢,可以從該表中抽取行,其中GETDATE匹配星期幾和這些行的時間。具體來說,如果行的日/時間從一週中的某一天開始到第二天結束,我需要查詢才能工作。查找在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)= 1

我怎麼會檢索該行給出的當前日期時間?

+0

你可以發表表DDL,一些示例數據和你期望的結果。這將有助於我們更好地瞭解您的需求,從而更好地瞭解您正在談論的數據類型。 – 2011-02-05 04:08:12

+0

當然,我已經添加了一些關於表結構的更多細節。 @Robert Kaucher @Victor – Corgalore 2011-02-05 04:20:09

回答

0

你可以嘗試這樣的:

select * from [yourtable] 
where yourdatefield between getDate() and (getDate()+1) 
0

我仍然清楚自己的需求,因爲他們似乎有點不實在。但是,這是我的去。

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. 
相關問題