从时间戳小时和几分钟中的Exasol Extrackt



我有一个带有数据类型时间戳的登录值的exasol数据库,例如:

2015-10-01 13:00:34.0
2015-11-02 13:10:10.0
2015-10-06 13:20:03.0
2016-02-01 14:15:34.0
2016-04-03 14:08:10.0
2016-07-01 11:05:07.0
2016-09-03 10:08:12.0
2016-11-15 09:03:30.0

以及更多。我想做一个我喜欢的SQL(SQLite)查询从09:00:00到09:15:00登录,从09:15:00到09:30:00登录(无论是什么日期)。我已经在1小时的间隔中选择以下时间很成功:

...EXTRACT(HOUR FROM entryTime ) BETWEEN 8 and 8

这样,我会在1小时内获得数据库的条目(无论是什么日期),但是我需要较小的间隔,就像每次09:00:00-09:15:00分钟一样。有什么想法如何在exasol(sqlite)中解决这个问题?

您可以简单地将时间戳的时间部分转换为字符串,然后在之间进行A之间的操作,例如:

WHERE to_char(entryTime, 'hhmi') BETWEEN '0900' AND '0915'

如果要使用提取物和数值,我建议这样做:

WHERE (EXTRACT(HOUR FROM entryTime) * 100) + EXTRACT(MINUTE FROM entryTime) 
      BETWEEN 900 and 915

我现在不在计算机前面,但这(或类似的东西)应该起作用。

,但我怀疑在两种情况下,Exasol都会为WHERE子句的第一部分创建expression index。因为,我想,您使用exasol是因为您有大量数据并且需要快速性能,所以我的建议是在表中有一个额外的列,其中将entryTime的时间部分存储为数字值,这将创建一个适当的索引可以为您提供更好的性能。

我找到了解决方法。解决方案是交流SQL状态。因此,在第一步中,您选择了小时,在该选择状态周围,您可以将另一个包裹在指定分钟的位置。

SELECT * FROM 
       (SELECT * FROM MY_SCHEMA.EXA_LOCAL WHERE EXTRACT(HOUR FROM TIMESTMP) BETWEEN 9 and 9) 
       where EXTRACT(MINUTE FROM TIMESTMP) BETWEEN 0 and 15;

相关内容

  • 没有找到相关文章

最新更新