Exasol SQL TIMESTAMP 查询

Exasol SQL TIMESTAMP query

我有一个 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

该列的数据类型是 TIMESTAMP。现在我想声明一个 SQL 查询,它向我显示 TIME 与 12:00:00 之前一样的所有行。 不管是什么日期(只有时间重要),和12:00:00之后的分开。 (如果我什至可以说 'between 8 and 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.%';

不工作。我收到错误消息:

'data exception - invalid value for YYYY format token; Value: '%12:00:00.%' 格式:'YYYY-MM-DD HH24:MI:SS.FF6'

所以有没有办法解决这个问题,这样我就可以 select 一段时间,不管现在是什么时候?

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

SELECT * FROM MySCHEMA.MyTable WHERE EXTRACT(HOUR FROM entryTime ) BETWEEN 8 and 10;

这相当于 CAST(...) 语句。

所以另一个有第二个 WHERE 子句的例子可能是这样的:

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

结果将是 table 个 persons/things,myNames 如 Sam...(Samantha、Samuel、Samira...),并且 entryTime 在 08:00:00 之间。 0000 和 10:59:59.9999 无论是什么日期。

与使用带有 HOUR 输入参数的 EXTRACT() 函数相同的解决方案,您可以按如下方式使用 HOUR() 函数

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