Использование DATE_ADD с CURRENT_DATE для поиска того, что происходит сегодня в таблице - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь выбрать свой стол, где я смотрю на события, которые произошли сегодня.

Я настроил его как:

WHERE date between CURRENT_DATE and DATE_ADD(CURRENT_DATE, 1, DAY);

Я получаю сообщение об ошибке DATE_ADD is not a valid identifier.Я использую MySQL.

Я также пытался DATEADD(), но я не думаю, что он работает в MYSQL.

Ответы [ 3 ]

1 голос
/ 23 сентября 2019

Не используйте between для этого!Это включает в себя обе конечные точки.Вместо этого:

where date >= current_date and
      date < current_date + interval 1 day

Или:

where date >= current_date and
      date < date_add(current_date, interval 1 day)

Вы (предположительно) не хотите полуночи между сегодняшним и завтрашним днем.

Кстати, если dateна самом деле это просто дата, а не datetime, выше будет работать, но вы также можете написать:

where date = current_date

Я настоятельно не рекомендую вам использовать:

where date(date) = current_date

, потому что это мешаетиндекс на date не используется.

Иногда люди путают MySQL и Oracle, потому что Oracle владеет обоими.В Oracle это будет выглядеть так:

where date >= current_date and
      date < current_date + interval '1' day

Это на самом деле будет работать и в MySQL.Или используя специфичные для Oracle функции:

where date >= trunc(sysdate) and
      date < trunc(sysdate) + interval '1' day
1 голос
/ 23 сентября 2019

Ошибка с вашим кодом: DATE_ADD() принимает дату в качестве первого аргумента и выражение интервала в качестве второго аргумента

Рассмотрим:

WHERE mydate BETWEEN CURRENT_DATE() AND DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY);

Или вы можетеиспользуйте ADDDATE(), который в качестве второго аргумента может принимать либо интервал, либо количество дней

WHERE mydate BETWEEN CURRENT_DATE() AND ADDDATE(CURRENT_DATE(), 1);

Примечание 1: обратите внимание, что CURRENT_DATE() это функция.Хотя MySQL также допускает написание CURRENT_DATE и CURRENT_DATE(), я обнаружил, что скобки проясняют цель.

Примечание 2: что касается DATEADD(), он просто не существует в MySQL.

0 голосов
/ 23 сентября 2019

старых версий MySQL вы можете сделать следующим образом.

where date between curdate() and curdate() + 1;

, и это все еще поддерживается до текущих версий MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...