使用同一列中的日期/时间和文本值查询顺序数据

时间:2019-05-25 07:34:04

标签: sql ms-access

我的数据是单个字段,包括日期,时间,小时,但也包括我需要的数据。

已经查询了2个关键字,但数据仍然很大,第二个关键字却空了

SELECT Field1
FROM TABLE1
WHERE Field1 Like '*EVENT_1' Or
      Field1 Like '*DATETIME'

我希望输出是:

预先感谢

1 个答案:

答案 0 :(得分:0)

首先将日志数据导入Access。在执行此操作时,告诉Access创建自己的主键,这将是一个自动编号:

[impLogData]

ID  Field1            
--  ------------------
 1    May/01/2019 7:00
 2  EVENT_0           
 3  EVENT_1 - val:10  
 4  EVENT_2           
 5  EVENT_3           
 6  EVENT_4           
 7  EVENT_5           
 8  EVENT_6           
 9    May/01/2019 8:00
10  EVENT_2           
11  EVENT_3           
12  EVENT_12          
13  EVENT_13          
14  EVENT_14          
15    May/01/2019 9:00
16  EVENT_0           
17  EVENT_1 - val:15  
18  EVENT_2           

创建一个[tblLogTime]表为

ID-长整数,主键
logTime-日期/时间

并用

填充
INSERT INTO tblLogTime ( ID, logTime )
SELECT impLogData.ID, CDate([Field1]) AS Expr1
FROM impLogData
WHERE (((IsDate([Field1]))=True));

生产

[tblLogTime]

ID  logTime            
--  -------------------
 1  2019-05-01 07:00:00
 9  2019-05-01 08:00:00
15  2019-05-01 09:00:00

然后创建一个[tblLogEvent]表为

logTime-日期/时间
logEvent-文本(255)

并用

填充
INSERT INTO tblLogEvent ( logTime, logEvent )
SELECT DMax("logTime","tblLogTime","ID < " & [impLogData].[ID]) AS Expr1, impLogData.Field1
FROM impLogData LEFT JOIN tblLogTime ON impLogData.ID = tblLogTime.ID
WHERE (((tblLogTime.ID) Is Null));

生产

[tblLogEvent]

logTime              logEvent        
-------------------  ----------------
2019-05-01 07:00:00  EVENT_0         
2019-05-01 07:00:00  EVENT_1 - val:10
2019-05-01 07:00:00  EVENT_2         
2019-05-01 07:00:00  EVENT_3         
2019-05-01 07:00:00  EVENT_4         
2019-05-01 07:00:00  EVENT_5         
2019-05-01 07:00:00  EVENT_6         
2019-05-01 08:00:00  EVENT_2         
2019-05-01 08:00:00  EVENT_3         
2019-05-01 08:00:00  EVENT_12        
2019-05-01 08:00:00  EVENT_13        
2019-05-01 08:00:00  EVENT_14        
2019-05-01 09:00:00  EVENT_0         
2019-05-01 09:00:00  EVENT_1 - val:15
2019-05-01 09:00:00  EVENT_2         

然后您可以使用来选择EVENT_1行

SELECT tblLogEvent.logTime, tblLogEvent.logEvent
FROM tblLogEvent
WHERE (((tblLogEvent.logEvent) Like "EVENT_1 *"))
ORDER BY tblLogEvent.logTime;

生产

logTime              logEvent        
-------------------  ----------------
2019-05-01 07:00:00  EVENT_1 - val:10
2019-05-01 09:00:00  EVENT_1 - val:15