Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择特定日期的数据_Mysql_Mysql Workbench - Fatal编程技术网

Mysql 选择特定日期的数据

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()函数,并让索引(如果存在)用于

我想根据我给出的日期格式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_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