0

日付と時刻が指定された日付よりも大きい行を取得したい。ここに私のテーブルがあります:

EvDate      EvTime      ClBdg   Name    Event
18.01.2015  10:55:01    001     Jane    enter
18.01.2015  19:31:21    003     Brad    exit
19.01.2015  13:31:21    002     Lucy    exit

与えられたdate18.01.2015timeです17:00:00。必要な値は次のとおりです。

EvDate      EvTime      ClBdg   Name    Event
18.01.2015  19:31:21    003     Brad    exit
19.01.2015  13:31:21    002     Lucy    exit

誰でも私を助けることができますか?

編集:より明確にするために、投稿を編集しました。クエリを実行する Java コードは次のとおりです。

private static final SimpleDateFormat sdfTime=new SimpleDateFormat("HH:mm:ss");  
private static final SimpleDateFormat sdfDate=new SimpleDateFormat("dd.MM.yyyy");  
private long givenTimeStamp = 1421600400L;
public static Date givenDate = new Date(givenTimeStamp);

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");  
String DATABASE = "jdbc:ucanaccess://"+CONF.getString("db.location")+";jackcessOpener=uz.lexus.access.crypto.MyCryptoProvider";  
connection= DriverManager.getConnection(DATABASE, null, null);  

List<Event> events=new ArrayList<Event>();  
String selectEvents = "select EvDate,EvTime,ClBdg,Event from Evntlog_tbl where  Event in ('enter','exit') and not ClBdg=0 and EvDate >= ? and EvTime > ?  order by EvDate desc, EvTime desc";
PreparedStatement prstm= connection.prepareStatement(selectEvent);  
java.sql.Date date=new java.sql.Date(sdfDate.parse(sdfDate.format()).getTime(givenDate));  
java.sql.Time time=new Time(sdfTime.parse(sdfTime.format(givenDate)).getTime());  

prstm.setDate(1,date);  
prstm.setTime(2,time); 

ResultSet rs = prstm.executeQuery();  

問題は、selectEvent のクエリが正しいかどうかです。

4

4 に答える 4

3
SELECT *  
FROM table1 
WHERE EvDate + EvTime > '2015-01-18T17:00:00'

代わりに、日付と時刻を追加する PERSISTED 計算列を作成することを検討できます。永続化された計算列はインデックスを許可します

ALTER TABLE table1 ADD cEVdatetime AS EvDate + EvTime PERSISTED 
于 2015-01-19T10:42:17.757 に答える
0

EvDate データ型が Date で、 EvTime データ型が Time であると想定しています。これを試して ....

select * from yourtablename where CONVERT(VARCHAR(20),EvDate ,112)>=20150118 AND EvTime >='17:00:00'

于 2015-01-19T10:49:04.460 に答える