我想从数据库中的给定日期获取所有那些大于那个记录的记录

时间:2011-03-15 09:28:05

标签: mysql

以下是我的查询已运行但未给出完美答案

SELECT `event`.* 
FROM `events` AS `event` 
WHERE (DATE_FORMAT(event.event_start,'%m-%d-%Y') >=
      DATE_FORMAT('2011-03-15','%m-%d-%Y') ORDER BY `event_start` desc ";

我认为'>'不适用于日期格式列。

2 个答案:

答案 0 :(得分:1)

DATE_FORMAT命令创建表示日期的字符串。因此,您要比较表示日期的字符串,而不是日期本身。

SELECT `event`.* 
FROM `events` AS `event` 
WHERE event.event_start >= '2011-03-15'
ORDER BY `event_start` desc ";

如果您绝对必须使用DATE_FORMAT命令(也许event_start不是日期列?),那么请确保您与年,月,日,而不是月,日,年进行比较。

SELECT `event`.* 
FROM `events` AS `event` 
WHERE (DATE_FORMAT(event.event_start,'%y-%m-%d') >=
      DATE_FORMAT('2011-03-15','%y-%m-%d') ORDER BY `event_start` desc ";

答案 1 :(得分:1)

您可以使用TIMESTAMPDIFF函数:

SELECT `event`.* 
FROM `events` AS `event` 
WHERE TIMESTAMPDIFF(DAY, '2011-03-15', event.event_start) > 0
ORDER BY 'event_start' desc";

这应该会为您提供2011-03-16中event_start的所有活动。 这里描述:mysql reference