数据库表有一列,表示预约完成时间,此时需要排序 就是 当预约完成的时间是今天的 排在最前,然后是当前时间以后的,然后才是过期的时间数据。不知道我描述清楚没有。。
比如: 3个数据吧
A 时间是 今天
B 时间是明天
C 时间是昨天
取数据时候 排序为 a b c
请问这样的sql怎么写?
Create table Testtable
(ID int identity(1,1),
dt datetime)
go
insert into Testtable(dt)
select dateadd(dd,2,GETDATE())
union all
select GETDATE()
union all
select dateadd(dd,-2,GETDATE())
union all
select GETDATE()
declare @today varchar(20)
set @today=CONVERT (VARCHAR(10),GETDATE(),121)
declare @tommorrow varchar(20)
set @tommorrow=CONVERT (VARCHAR(10),dateadd(dd,1,GETDATE()),121)
--select @today
--select @tommorrow
select * from Testtable where dt between cast(@today as datetime) and cast(@tommorrow as datetime)
union all
select * from Testtable where dt>=cast(@tommorrow as datetime)
union all
select * from Testtable where dt<=cast(@today as datetime)
执行结果
ID dt
2 2009-09-01 11:40:12.013
4 2009-09-01 11:40:12.013
1 2009-09-03 11:40:12.013
3 2009-08-30 11:40:12.013
order by 预约时间。asc |desc