以上是表结构,时间放在两个字段里Event_Date(存放年月日)和Event_Time(存放时分秒)比如我要select 2010-07-28 09:00:00 到 2010-07-29 09:00:00 之间的记录,sql语句怎么写?我自己用了两种方法
第一种:
Event_Date+' '+Event_Time between ‘2010-07-28 09:00:00’ and '2010-07-29 09:00:00'
第二种:
我增加了一个字段(Time),增加了一个触发器,把Event_Date+' '+Event_Time between的值放在新字段里
Time between ‘2010-07-28 09:00:00’ and '2010-07-29 09:00:00'但这两种方法查询所需要的时间太漫长,往往都要花去10多分钟我试过光Event_Date>‘2010-07-28' 这个很块。
视图里把 Event_Date(存放年月日)和Event_Time(存放时分秒)合并成 一个时间字段
最后从视图里查询结果
CREATE TABLE dbo.Tmp_T
(
ID int NOT NULL IDENTITY (1, 1) PRIMARY KEY NONCLUSTERED,
Event_Date datetime NOT NULL,
Event_Time datetime NOT NULL,
Date AS ([Event_Date]+[Event_Time] ) PERSISTED
)
GOCREATE CLUSTERED INDEX IX_Tmp_T_Date ON Tmp_T(Date)
goINSERT Tmp_T(Event_Date,Event_Time) VALUES('2010-07-28','09:00:00')GO
SELECT * FROM Tmp_T WHERE Date BETWEEN '2010-07-28 09:00:00' and '2010-07-29 09:00:00'
go
SELECT * FROM CardEvent WHERE EventTime BETWEEN '2010-07-28 09:00:00' and '2010-07-29 09:00:00'那个我这样试了下,还是很慢