簡體   English   中英

查找最近3天的mysql記錄

[英]Find mysql records from last 3 days

我想獲取最近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`

我該如何工作?

DATE_SUB期望第二個參數為INTERVAL表達式,並將返回日期/日期時間結果,而不是整數。

您可以嘗試以下方法:

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

請注意,將未修改的insert_date值與要比較的計算日期進行比較非常重要,因為這樣可以在insert_date上使用索引。 您應該在表上添加此索引以優化查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM