2010-09-02 39 views
1

如何查看錶格中的日期時間列是否處於特定小時間隔(例如13:07 - 15:15)和特定日期(例如,星期四)在SQL select語句中?如果日期時間在特定時間間隔內使用SQL進行查找

感謝,

+2

所有的答案在這裏向你展示了對日期時間值進行過濾的不同方式,我認爲你有足夠的信息來自己編寫代碼。在這一點上,你只是問「請爲我寫代碼,我不想打擾試圖理解它。」 – tenfour 2010-09-02 08:31:07

回答

1

日和開始/結束小時作爲參數

declare @tbl table (datecol datetime) 

declare @startHour int 
declare @endHour int 
declare @specificDay varchar(10) 

set @startHour = 13 
set @endHour = 15 
set @specificDay = 'Thursday' 

insert into @tbl select getdate() 
insert into @tbl select dateadd(hh, 1, getdate()) 
insert into @tbl select dateadd(n, 10, getdate()) 
insert into @tbl select dateadd(dd, 2, getdate()) 

select * from @tbl 
where DATENAME(dw, datecol) = @specificDay 
and datepart(hh, datecol) >= 13 
and datepart(hh, datecol) <= 15 

編輯:

declare @tbl table (datecol datetime) 

declare @startHour varchar(10) 
declare @endHour varchar(10) 
declare @specificDay varchar(10) 

set @startHour = '13:05:00' 
set @endHour = '15:30:00' 
set @specificDay = 'Thursday' 

insert into @tbl select getdate() 
insert into @tbl select dateadd(hh, 1, getdate()) 
insert into @tbl select dateadd(n, 10, getdate()) 
insert into @tbl select dateadd(dd, 2, getdate()) 

select * from @tbl 
where DATENAME(dw, datecol) = @specificDay 
and CONVERT(VARCHAR(8), datecol,8) >= @startHour 
and CONVERT(VARCHAR(8), datecol,8) <= @endHour 

如果時間有小時和分鐘零件只有像'13:05'那麼這樣改變它

and CONVERT(VARCHAR(5), datecol,8) >= @startHour 
and CONVERT(VARCHAR(5), datecol,8) <= @endHour 
+0

如果我的時間是13:15和15:07怎麼辦? – anilca 2010-09-02 08:30:53

+0

查看編輯答案 – Kashif 2010-09-02 08:36:30

0

可以使用BETWEEN關鍵字。如... WHERE MyDate BETWEEN Date1 and Date2

+0

但我只需要例如星期一和13:05-15:30? – anilca 2010-09-02 08:17:48

1
select * From #t 

Where DatePart(hour, [date]) >=10 
and DatePart(hour, [date]) <= 11 

And DatePart(minute, [date]) >= 15 
And DatePart(minute, [date]) <= 45 

and Datename(dw,[date]) = 'Thursday' 
+0

分鐘呢?例如我的小時間隔是「13:07-15:16」 – anilca 2010-09-02 08:14:57

0

我通常使用的語法如下:

DECLARE @FromTime DATETIME 
DECLARE @ToTime DATETIME 
SET @FromTime = '2010-09-02T13:00:00' 
SET @ToTime = '2010-09-02T15:00:00' 

SELECT Something 
FROM MyTable 
WHERE DateField >= @FromTime 
    AND DateField < @ToTime 

你可以使用BETWEEN,但我通常喜歡上面的,而不是爲之間包容例如在這個例子中,使用BETWEEN將包括記錄,其中所述時間爲15:00:00.000周的

+0

但是我只需要例如星期一和13:05-15:30 – anilca 2010-09-02 08:16:29

+0

@anilca - 啊好吧,我原來並沒有明白這一點! – AdaTheDev 2010-09-02 08:29:24