首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用to_char(时间戳,‘YYYY-MM-DD’)函数进行索引

使用to_char(时间戳,‘YYYY-MM-DD’)函数进行索引
EN

Stack Overflow用户
提问于 2018-08-07 12:25:34
回答 1查看 2.5K关注 0票数 1

SQL子句中有以下内容。这是针对Oracle数据库运行的。时间戳字段在数据库中被定义为Time估值字段。我的选择查询是:

代码语言:javascript
运行
复制
create index ind_timestamp on sms_in(to_char(timestamp,'YYYY-MM-DD'));

select * from sms_in where to_char(timestamp,'YYYY-MM-DD')in '2018-08-01';

但是,当我要执行查询时,数据库访问是满的。这意味着索引不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-07 12:55:21

如果你总是在寻找某一天的数据,那么我的建议如下

timestamp列上添加一个普通索引

代码语言:javascript
运行
复制
create index ind_timestamp on sms_in(timestamp);

你的选择看起来就像

代码语言:javascript
运行
复制
select * 
  from sms_in 
 where timestamp between to_date('2018-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 
                     and to_date('2018-08-01 23:59:59','YYYY-MM-DD HH24:MI:SS');

或者你可以这样做

代码语言:javascript
运行
复制
select * 
  from sms_in 
 where timestamp >= to_date('2018-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
  and timestamp  <= to_date('2018-08-01 23:59:59','YYYY-MM-DD HH24:MI:SS');

编辑:

这个答案基本上是正确的,但逻辑应该是:

代码语言:javascript
运行
复制
select * 
 from sms_in 
 where timestamp >= date '2018-08-01' and
       timestamp < date '2018-08-02 ;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51726769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档