以上是表结构,时间放在两个字段里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' 这个很块。

解决方案 »

  1.   

    Event_Date(存放年月日)和Event_Time(存放时分秒)Event_Date+Event_Time--格式滿足用+號就行了提高速度:用一個計算列+索引
      

  2.   

    创建个视图吧
    视图里把 Event_Date(存放年月日)和Event_Time(存放时分秒)合并成 一个时间字段
    最后从视图里查询结果
      

  3.   

    給個例子,樓主參照
    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'
      

  4.   

    我现在在原表上添了个字段(time)把哪两个字段的值合并在一块,再给它加个索引不知道可不可以?
      

  5.   

    CREATE CLUSTERED INDEX IX_Tmp_T_Date ON CardEvent(EventTime)
    go
    SELECT * FROM CardEvent WHERE EventTime BETWEEN '2010-07-28 09:00:00' and '2010-07-29 09:00:00'那个我这样试了下,还是很慢