Вы понимаете один метод, который заключается в разделении даты и времени на отдельные столбцы.Вероятно, это самый простой метод.
Триггер - это другой метод, но его довольно сложно поддерживать.
Другой возможностью является использование префиксов столбцов.Недостатком является то, что столбец должен храниться в виде строки:
create table t (
. . .,
datetimecol char(19), -- format "YYYY-MM-DD HH:MI:SS"
);
create unique index unq_t_datetimecol on t(datetimecol(10));
Этот подход настолько полезен, что MySQL наконец-то реализовал индексы, используя выражения в 8.0.13.Это позволяет:
create table t (
. . .,
datetimecol datetime,
. . .
);
create unique index unq_t_datetimecol on t(date(datetimecol));
О, есть и другой метод, использующий также сгенерированные столбцы:
create table t (
. . .,
datetimecol datetime,
. . .,
datecol date generated always as (date(datetimecol)) stored,
unique (datecol)
);