Mysql 选择特定日期的数据
我想根据我给出的日期格式YYYY,MM,dd从数据库中检索记录,但列类型是YYYY,MM,dd hh:MM:ss 尝试使用日期格式函数Mysql 选择特定日期的数据,mysql,mysql-workbench,Mysql,Mysql Workbench,我想根据我给出的日期格式YYYY,MM,dd从数据库中检索记录,但列类型是YYYY,MM,dd hh:MM:ss 尝试使用日期格式函数 SELECT * FROM tabl.error_logs where created_at = DATE_FORMAT(NOW(),'%Y-%m-%d'- INTERVAL 3 DAY); 我预计创建日期为2019-06-08,但结果为空您可以使用date\u sub() 如果创建的列是日期,则可以避免使用date()函数,并让索引(如果存在)用于
SELECT *
FROM tabl.error_logs
where created_at = DATE_FORMAT(NOW(),'%Y-%m-%d'- INTERVAL 3 DAY);
我预计创建日期为2019-06-08,但结果为空您可以使用date\u sub()
如果创建的列是日期,则可以避免使用date()函数,并让索引(如果存在)用于该列
SELECT *
FROM tabl.error_logs
where created_at = DATE_SUB(date(now()), INTERVAL 3 DAY);
您可以使用date_sub()
如果创建的列是日期,则可以避免使用date()函数,并让索引(如果存在)用于该列
SELECT *
FROM tabl.error_logs
where created_at = DATE_SUB(date(now()), INTERVAL 3 DAY);
要进行查询,您需要
SELECT *
FROM tabl.error_logs
WHERE created_at >= DATE_SUB(CURDATE(), INTERVAL 3 DAY)
AND created_at < DATE_SUB(CURDATE(), INTERVAL 2 DAY)
选择*
从tabl.error\u日志
其中创建时间>=日期子项(CURDATE(),间隔3天)
并在
这将选择三天前午夜或之后创建的所有值,直到但不包括要进行查询,您需要
SELECT *
FROM tabl.error_logs
WHERE created_at >= DATE_SUB(CURDATE(), INTERVAL 3 DAY)
AND created_at < DATE_SUB(CURDATE(), INTERVAL 2 DAY)
选择*
从tabl.error\u日志
其中创建时间>=日期子项(CURDATE(),间隔3天)
并在
这将选择三天前午夜或之后创建的的所有值,直到但不包括在列创建的的实际数据类型是什么
这个答案将忽略带逗号格式的趣味性,并假设它不是字符类型的数据,而是DATETIME
或TIMESTAMP
DATETIME
和TIMESTAMP
列上谓词的标准模式是范围比较
例如,要在6月10日获取所有datetimecol值,请执行以下操作:
WHERE t.datetimecol >= '2019-06-10 00:00:00'
AND t.datetimecol < '2019-06-11 00:00:00'
为了提高性能,为了使MySQL能够有效地利用对适当索引的范围扫描操作,我们希望避免在函数中包装列引用。也就是说,在WHERE子句的条件中指定DATE(t.datetimecol)
将强制MySQL对表中的每一行计算DATE()
函数
通过对裸列的引用,允许MySQL使用索引(如果有合适的索引可用)
e、 g
在
列中创建的的实际数据类型是什么
这个答案将忽略带逗号格式的趣味性,并假设它不是字符类型的数据,而是DATETIME
或TIMESTAMP
DATETIME
和TIMESTAMP
列上谓词的标准模式是范围比较
例如,要在6月10日获取所有datetimecol值,请执行以下操作:
WHERE t.datetimecol >= '2019-06-10 00:00:00'
AND t.datetimecol < '2019-06-11 00:00:00'
为了提高性能,为了使MySQL能够有效地利用对适当索引的范围扫描操作,我们希望避免在函数中包装列引用。也就是说,在WHERE子句的条件中指定DATE(t.datetimecol)
将强制MySQL对表中的每一行计算DATE()
函数
通过对裸列的引用,允许MySQL使用索引(如果有合适的索引可用)
e、 g
这看起来很奇怪-间隔3天
中间部分应该做什么?@NicoHaase此返回从现在起3天之前的日期它对您有帮助@user3210456这看起来很奇怪-间隔3天
中间部分应该做什么?@NicoHaase此返回从现在起3天之前的日期它对您有帮助@USER3210456请注意,此解决方案不能非法使用索引。。where子句中有函数,特别是列上的函数,但不清楚列的格式。。if已经是日期或if是datetime..请注意,此解决方案不能以索引方式使用。。where子句中有函数,特别是列上的函数,但不清楚列的格式。。if已经是日期或if是datetime..+10裸列上的不平等比较(未包装在函数中)将允许MySQL在适当的索引可用时使用索引范围扫描操作+裸列上的10+10不平等比较(未包装在函数中)将允许MySQL在适当的索引可用时使用索引范围扫描操作+10
SELECT DATE(NOW()) + INTERVAL -3 DAY
, DATE(NOW()) + INTERVAL -2 DAY