Sql Query, не получая правильные значения с помощью функции CURDATE ()

0

Мне нужно получить записи из базы данных, где мое значение dateOfTermination равно сегодняшней дате. Я использовал приведенный ниже запрос, но он не будет показывать никаких результатов.

select * from user 
where CRM_Status='pending' and dateOfTermination = DATE_ADD(CURDATE(), INTERVAL 1 DAY)

Он будет работать, только если запрос указан ниже.

select * from user 
where CRM_Status='pending' and dateOfTermination < DATE_ADD(CURDATE(), INTERVAL 1 DAY)

Это из-за проблемы в формате даты?

Теги:

3 ответа

0

Предполагая, что время - проблема. Почему бы просто не упростить это?

выберите * от пользователя, где CRM_Status = 'pending' и cast (dateOfTermination as date) = cast (GETDATE() как DATE)

  • 0
    выберите * у пользователя, где CRM_Status = «в ожидании» и приведение (dateOfTermination как дата) = приведение (UTC_DATE () как DATE) Проблема остается той же.
  • 0
    Случайный вопрос. Но, глядя на ваши исходные данные, вы получаете результаты, когда вы смотрите на <, но ничего, когда вы смотрите на = до сегодняшнего дня. Существуют ли значения, где dateOfTermination = сегодня?
Показать ещё 3 комментария
0

Вы можете использовать функцию MySQL DATE_FORMAT, чтобы получить дату без компонента времени, а затем выполнить сравнение. Таким образом, запрос должен выглядеть так:

SELECT * FROM user 
WHERE CRM_Status='pending' AND 
DATE_FORMAT(dateOfTermination,'%d-%m-%Y')=DATE_FORMAT(DATE_ADD(CURDATE(),INTERVAL 1 DAY),'%d-%m-%Y');
0

Я предполагаю, что dateOfTermination имеет компонент времени. Попробуй это:

select u.*
from user u
where u.CRM_Status = 'pending' and
      u.dateOfTermination >= CURDATE() AND
      u.dateOfTermination < DATE_ADD(CURDATE(), INTERVAL 1 DAY);

Вы также можете выразить это как:

select u.*
from user u
where u.CRM_Status = 'pending' and
      DATE(u.dateOfTermination) = DATE_ADD(CURDATE(), INTERVAL 1 DAY);

Собственно, семантика немного отличается - но непонятно, что вы действительно намереваетесь. Первая версия "лучше" в том смысле, что она может лучше использовать индексы для производительности.

  • 0
    Я попробовал то, что вы поделились. Тем не менее, я сталкиваюсь с той же проблемой :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню