請教時間處理問題
表tb1結構:
f1 int 自增
f2 datetime
f2的值大致如下:
2006-12-20 22:22:32.000
2006-12-20 23:32:38.000
2006-12-20 00:24:49.000
declare t1 char(5),
t2 char(5),
t3 datetime
set t1= '23:30 '
set t1= '00:30 ' 第二天的l凌晨時間
現在請教如何在表tb1中查詢出字段f2時間部分在t1至t2范圍的紀錄
------解决方案--------------------select * from tablename where f2 between cast(( '2006-12-20 '+ '23:30 '+ ':000 ') as datetime) and cast(( '2006-12-21 '+ '00:30 '+ ':000 ') as datetime)
------解决方案--------------------select * from tablename
where convert(varchar(10),f2,108) between '23:30 ' and '00:30 '
------解决方案--------------------create table T(f1 int, f2 datetime)
insert T select 1, '2006-12-20 22:22:32.000 '
union all select 2, '2006-12-20 23:32:38.000 '
union all select 3, '2006-12-20 00:24:49.000 '
declare @t1 char(5), @t2 char(5)
set @t1= '23:30 '
set @t2= '00:30 '
select * from T
where f2 between (convert(char(10), f2, 120)+ ' '+@t1) and (convert(char(10), f2+1, 120)+ ' '+@t2)
--result
f1 f2
----------- ------------------------------------------------------
2 2006-12-20 23:32:38.000
(1 row(s) affected)
------解决方案-------------------- create table T(f1 int, f2 datetime)
insert T select 1, '2006-12-20 22:22:32.000 '
union all select 2, '2006-12-20 23:32:38.000 '
union all select 3, '2006-12-20 00:24:49.000 '
select f2 from T where
DATEDIFF(Hour, Convert(char(8),f2,112),f2) in (23,0)
and
(DATEDIFF(Minute, Convert(char(10),f2,112),f2)-DATEDIFF(Hour, Convert(char(8),f2,112),f2)*60)
between 0 and 59
------解决方案-------------------- create table T(f1 int, f2 datetime)
insert T select 1, '2006-12-20 22:22:32.000 '
union all select 2, '2006-12-20 23:32:38.000 '
union all select 3, '2006-12-20 00:24:49.000 '
union all select 4, '2006/12/28 00:34:11.000 '
select f2 from T where
(DATEDIFF(Hour, Convert(char(8),f2,112),f2)=23
and
(DATEDIFF(Minute, Convert(char(10),f2,112),f2)-DATEDIFF(Hour, Convert(char(8),f2,112),f2)*60)
between 0 and 59)
or
(DATEDIFF(Hour, Convert(char(8),f2,112),f2)=0
and
(DATEDIFF(Minute, Convert(char(10),f2,112),f2)-DATEDIFF(Hour, Convert(char(8),f2,112),f2)*60)
between 0 and 30)
------解决方案--------------------字段f2時間部分在t1至t2范圍的紀錄?LZ 你表達的不是很清楚.
2006-12-20 00:24:49.000
2006-12-20 23:34:49.000
2006-12-19 23:34:49.000
2006-12-19 00:24:49.000
時間在 00:30 和 23:30 中的記錄是?