查找过去3天内的mysql记录

时间:2015-01-16 21:29:53

标签: mysql

我想获取过去3天的记录。我有以下mysql表:

CREATE TABLE IF NOT EXISTS `mytable` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`emails` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`phones` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`history` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`insert_date` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=259 ;

INSERT INTO `mytable` (`id`, `emails`, `phones`, `history`, `insert_date`)
VALUES
(118, 'PLEASE SET',  'addr@yahoo.com', 'None','2015-01-13'),
(237, 'PLEASE SET', 'addr@yahoo.com', 'gomez', '2015-01-11');

我试过了:

SELECT * FROM `mytable` WHERE DATE_SUB(CURDATE(), `insert_date`) > 3

这给出了:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`insert_date`

我怎样才能使这个工作?

1 个答案:

答案 0 :(得分:3)

DATE_SUB期望第二个参数为INTERVAL表达式,并返回日期/日期时间结果,而不是整数。

你可以试试这个:

SELECT *
FROM `mytable`
WHERE `insert_date` >= DATE_SUB(CURDATE(), INTERVAL 3 DAY)

请注意,将未修改的insert_date值与您要比较的计算日期进行比较非常重要,因为这样可以在insert_date上使用索引。您应该在表上添加此索引以优化查询。