我的数据库中有一列"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)