仅将日期和月份与mysql中的日期字段进行比较

时间:2014-07-01 12:18:31

标签: mysql sql date select

如何比较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"

4 个答案:

答案 0 :(得分:25)

改为使用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"

答案 1 :(得分:8)

您可以使用DAYOFMONTHMONTH功能:

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

修改 当然,如果你想比较两个字段,你也可以写下面的内容:

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

有关详细信息,请查看手册:

  1. MONTH
  2. DAYOFMONTH

答案 2 :(得分:3)

使用MONTHDAY函数:

试试这个:

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 :(得分:1)

您可以使用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