Exasol SQL时间戳查询

Exasol SQL时间戳查询,sql,timestamp,between,exasolution,Sql,Timestamp,Between,Exasolution,我有一个Exasol数据表,其列如下所示: 2016-10-25 08:01:36.0 2016-10-25 08:30:09.0 2016-10-25 09:00:15.0 2016-10-26 08:02:38.0 2016-10-26 10:00:44.0 2016-10-27 10:00:44.0 SELECT * FROM MySCHEMA.MyTable WHERE EXTRACT(HOUR FROM entryTime ) BETWEEN

我有一个Exasol数据表,其列如下所示:

2016-10-25 08:01:36.0    
2016-10-25 08:30:09.0    
2016-10-25 09:00:15.0    
2016-10-26 08:02:38.0    
2016-10-26 10:00:44.0    
2016-10-27 10:00:44.0
SELECT * FROM MySCHEMA.MyTable WHERE EXTRACT(HOUR FROM entryTime ) BETWEEN 8 and 10;
该列的数据类型是TIMESTAMP。现在,我想声明一个SQL查询,它向我显示时间在12:00:00之前的所有行无论是哪一天(只有时间重要),将其与12:00:00之后的日期分开。(如果我能说“8到12”和“12到18”之类的话,那就太好了)

这样的陈述:

SELECT * FROM MySCHEMA.MyTable WHERE entryTime < '%12:00:00.%';
SELECT * FROM MySCHEMA.MyTable WHERE entryTime BETWEEN '%08:00:00.%' AND '%12:00:00.%';
SELECT * FROM MySCHEMA.MyTable WHERE myNames LIKE 'Sam%' AND EXTRACT(HOUR FROM entryTime ) BETWEEN 8 and 10;
从MySCHEMA.MyTable中选择*,其中entryTime<'%12:00:00.%';
从MySCHEMA.MyTable中选择*,其中entryTime介于“%08:00:00.%”和“%12:00:00.%”之间;
你不工作了。我收到了错误消息:

'数据异常-YYYY格式令牌的值无效;值:'%12:00:00.%'格式:'YYYY-MM-DD HH24:MI:SS.FF6'


有没有办法解决这个问题,这样我就可以选择一段时间,不管它是什么日期?

Exasol的select语句必须如下所示:

2016-10-25 08:01:36.0    
2016-10-25 08:30:09.0    
2016-10-25 09:00:15.0    
2016-10-26 08:02:38.0    
2016-10-26 10:00:44.0    
2016-10-27 10:00:44.0
SELECT * FROM MySCHEMA.MyTable WHERE EXTRACT(HOUR FROM entryTime ) BETWEEN 8 and 10;
这是CAST(…)语句的等价项

另一个例子是第二个where子句可能是这样的:

SELECT * FROM MySCHEMA.MyTable WHERE entryTime < '%12:00:00.%';
SELECT * FROM MySCHEMA.MyTable WHERE entryTime BETWEEN '%08:00:00.%' AND '%12:00:00.%';
SELECT * FROM MySCHEMA.MyTable WHERE myNames LIKE 'Sam%' AND EXTRACT(HOUR FROM entryTime ) BETWEEN 8 and 10;

结果将是一个有我名字的人/事的表格,比如Sam。。。(萨曼莎、塞缪尔、萨米拉……)无论是哪一天,入场时间都在08:00:00.0000到10:59:59.9999之间

与使用EXTRACT()函数和HOUR输入参数一样,您可以使用HOUR()函数,如下所示

SELECT * FROM EXA_DBA_AUDIT_SQL WHERE HOUR(START_TIME) BETWEEN 8 and 9; -- up to 9:59:59

%
是一个类似于的通配符,用于字符数据类型。不知道Exasol,但在标准SQL中,这将是时间“08:00:00”和时间“12:00:00”之间的
转换(entryTime作为时间)
感谢@dnoeth的提示。不幸的是,Exasol不支持这一点。我会找到一个解决办法。我刚刚检查了Exasol是否支持
提取
,所以
提取(从entryTime开始的小时数)在8到11之间
返回everthing>=8:00,真不可思议!就这样!非常感谢@dnoeth。我正要改变桌子和其他东西。饶了我很多时间!