一般に、where
条件の列側で関数を使用することは避けたいと考えています。これは、おそらくインデックスから利益を得るためにクエリが不適格となるためです。
が何かのように考えてみましょう:
create table test_table (id varchar(36) primary key, ts timestamp);
insert into test_table (id,ts) values('yesterday', current_timestamp - interval 1 day);
insert into test_table (id,ts) values('midnight', current_date);
insert into test_table (id,ts) values('now', current_timestamp);
insert into test_table (id,ts) values('next midnight', current_date + interval 1 day);
insert into test_table (id,ts) values('tomorrow', current_timestamp + interval 1 day);
create index test_table_i1 on test_table (ts);
select *
from test_table
where ts >= current_date
and ts < current_date + interval 1 day;
;
PS:あなたは次の深夜を除くうるさいいないのであれば、あなたも
select *
from test_table
where ts between current_date and current_date + interval 1 day;
を使用することができます(between
は、両方の境界を受け入れる)
あなたが共有することができますいくつかのデータを持つデータベースの基本構造.. ?? – Jenish