查询没有时间的date_created与没有时间的last_updated相同

时间:2012-01-25 14:40:48

标签: mysql

在MySQL中,我需要编写一个查询(如果可能的话),查找表的所有行,其中date_created与last_updated相同。问题是我需要忽略时间。基本上,我正在寻找在同一天创建和激活的用户行(我们不会存储激活日期)。所以大概日期可能相同,但时间可能不同。

3 个答案:

答案 0 :(得分:2)

试试这个:

SELECT *
  FROM table_name
 WHERE DATE_FORMAT(date_created, '%Y-%m-%d') = DATE_FORMAT(last_updated, '%Y-%m-%d') 

答案 1 :(得分:2)

您可以使用DATE()函数,该函数仅返回日期时间值的日期部分。这允许您仅比较值的日期部分:

SELECT * FROM table_name
WHERE DATE(date_created) = DATE(last_updated)

时区可能与此相关。因此,您可能希望在使用DATE()函数之前使用CONVERT_TZ()将日期时间值强制转换为用户的时区。

答案 2 :(得分:0)

不漂亮但有效:

SELECT *
FROM table_name
WHERE day(date_created) = day(last_updated) and
month(date_created) = month(last_updated) and
year(date_created) = year(last_updated)