it-swarm.com.ru

Сравните только день и месяц с полем даты в mysql

Как сравнить только день и месяц с полем даты в mysql? Например, у меня есть дата в одной таблице: 2014-07-10

Точно так же другая дата 2000-07-10 в другой таблице . Я хочу сравнить только день и месяц в поле даты.

Я попробовал этот формат. Но я не могу получить ответ

select *
from table
where STR_TO_DATE(field,'%m-%d') = STR_TO_DATE('2000-07-10','%m-%d')
and id = "1"
7
John

Вместо этого используйте DATE_FORMAT:

SELECT DATE_FORMAT('2000-07-10','%m-%d')

доходность

07-10

Вот ваш запрос переписан с DATE_FORMAT():

SELECT *
FROM table
WHERE DATE_FORMAT(field, '%m-%d') = DATE_FORMAT('2000-07-10', '%m-%d')
AND id = "1"
23
Marcus Adams

вы можете сделать это с помощью функций DAYOFMONTH и MONTH:

SELECT *
FROM table
WHERE DAYOFMONTH(field) = 31 AND MONTH(field) = 12 AND id = 1;

EDIT: Конечно, вы также можете написать следующее, если хотите сравнить два поля:

SELECT *
FROM table
WHERE 
    DAYOFMONTH(field) = DAYOFMONTH(field2) 
    AND MONTH(field) = MONTH(field2) 
    AND id = 1 ...;

для получения дополнительной информации ознакомьтесь с руководством:

  1. MONTH
  2. DAYOFMONTH
8
chresse

Используйте MONTH и DAY functions:

Попробуй это: 

SELECT *
FROM tableA a 
WHERE a.id = 1 AND MONTH(a.field) = MONTH('2000-07-10') AND 
      DAY(a.field) = DAY('2000-07-10') 
3
Saharsh Shah

Вы можете использовать DATE_FORMAT:

SELECT * FROM `table`
    WHERE DATE_FORMAT(STR_TO_DATE(`field`, '%Y-%m-%d'), '%d-%m') = DATE_FORMAT(STR_TO_DATE('2000-07-10','%Y-%m-%d'), '%d-%m')

также второй WHERE недействителен. В любом случае вы хотели бы получить все строки не только id=1

1
Mihai Iorga