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