DATETIME在表中的MySQL搜索记录[重复]
Posted
技术标签:
【中文标题】DATETIME在表中的MySQL搜索记录[重复]【英文标题】:MySQL search record in table by DATETIME [duplicate] 【发布时间】:2014-05-24 07:19:03 【问题描述】:我已经在 mysql 中创建了这个表:
CREATE TABLE events (
id TINYINT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR ( 15 ) NOT NULL,
description TEXT NOT NULL,
_type VARCHAR ( 15 ) NOT NULL,
date_time DATETIME NOT NULL,
location VARCHAR ( 15 ) NOT NULL
)ENGINE = INNODB;
然后我在表中插入了一些记录,其中一个具有 DATETIME 字段 2014-04-04 00:00:00。我想要的是通过它的 DATETIME 字段搜索这条记录。例如:
SELECT * FROM events WHERE date_time = 2014-04-04;
但是这个查询返回:
Empty set, 1 warning (0.00 sec)
为什么这不起作用?
【问题讨论】:
【参考方案1】:您需要使用DATE()
来获取日期时间字符串的日期部分以进行比较(并在日期字符串周围加上引号):
SELECT * FROM events WHERE DATE(date_time) = '2014-04-04';
【讨论】:
嘿乔恩,你能评论接受的答案here吗?我正要将此标记为骗子,它建议您不要使用DATE
工作!抱歉这个愚蠢的问题,谢谢.. :)
@Andy 那将是比我在这里回答的更好的做法。【参考方案2】:
你有一个选项是
WHERE columname BETWEEN '2014-04-04 00:00:00' AND '2014-04-04 23:59:59'
与WHERE DATE(date_time) = '2014-04-04'
答案相比,使用它的优势在于,在使用DATE
函数时(正如Eugine Reick 在answer 中提到的那样)
因此,如果您的表很小并且预计不会显着增长,DATE
答案将适合您。但是,如果您期望有大量数据,性能将会下降。最好使用BETWEEN
选项。
【讨论】:
是的,我已经尝试过了,它奏效了。还有一个小问题 - 例如,我怎样才能只按天搜索?以上是关于DATETIME在表中的MySQL搜索记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章