需要所有MySQL行中包含未来7天内的日期,但日期列的格式不正常


Need all MySQL rows with dates in the next 7 days, but the date column is not formatted normally

我的数据库中有一列"scheduledDate",我需要从今天起7天内数据库中所有具有scheduledDate的行。

我可以使用这样的查询:

SELECT * FROM tblName WHERE `scheduledDate` > DATE_ADD(now(), INTERVAL 7 DAY

唯一的问题是,"scheduledDate"列没有格式化为mysql时间戳(YYYY-MM-DD HH:MM:SS),而是格式化为标准的美国日期(07/09/2014)。有没有办法在接下来的7天内获取我的查询中的所有行?我在想使用DATE_FORMAT可能是可行的,但我一直无法弄清楚。

您可以使用str_to_date():将字符串转换为日期

WHERE str_to_date(`scheduledDate`, '%m/%d/%Y') BETWEEN now() and DATE_ADD(now(), INTERVAL 7 DAY)

逻辑也需要改变。上面使用了between,但这可能不是您真正需要的逻辑,因为now()上有无关的时间组件。也许这更接近:

WHERE str_to_date(`scheduledDate`, '%m/%d/%Y') BETWEEN CURRENT_DATE() and DATE_ADD(CURRENT_DATE, INTERVAL 7 DAY)
WHERE scheduledDate >= Date_Add(now(), INTERVAL -7 DAY)