Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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-使用日期范围vs函数_Mysql_Date_Date Range - Fatal编程技术网

MySQL-使用日期范围vs函数

MySQL-使用日期范围vs函数,mysql,date,date-range,Mysql,Date,Date Range,我需要知道在6月和7月注册了多少用户,这是我写的第一个查询: select count(*) from users where created_at>="2013-06-01" and created_at<="2013-07-31" 结果:16278 为什么它们返回不同的结果?有人能解释一下吗?还是我遗漏了什么 谢谢。两个查询应该是等价的,除了第一个查询能够使用索引,而且应该更快,而且在处创建的不是日期而是时间戳 如果在处创建的是一个时间戳,则应按以下方式编写第一个查询: sel

我需要知道在6月和7月注册了多少用户,这是我写的第一个查询:

select count(*) from users where created_at>="2013-06-01" and created_at<="2013-07-31"
结果:16278

为什么它们返回不同的结果?有人能解释一下吗?还是我遗漏了什么


谢谢。

两个查询应该是等价的,除了第一个查询能够使用索引,而且应该更快,而且在处创建的
不是日期而是时间戳

如果在
处创建的
是一个时间戳,则应按以下方式编写第一个查询:

select count(*) from users
where created_at>='2013-06-01' and created_at<'2013-08-01'
从用户中选择计数(*)

当created_at>='2013-06-01'和created_at时,这两个查询应该是等价的,除了第一个查询能够使用索引并且应该更快,并且除了在
处创建的
不是日期而是时间戳

如果在
处创建的
是一个时间戳,则应按以下方式编写第一个查询:

select count(*) from users
where created_at>='2013-06-01' and created_at<'2013-08-01'
从用户中选择计数(*)

如果在>='2013-06-01'创建,而在创建,原因是日期值不包括最后一天:日期常量在午夜转换为时间戳。您正在这些值之间进行查询:

2013-06-01 00:00:00
2013-07-31 00:00:00
所以只包括最后一天的第一秒

试试这个:

select count(*)
from users
where created_at>="2013-06-01"
and created_at<="2013-07-31 23:59:59"
选择计数(*)
来自用户
创建地点>=“2013-06-01”
并创建了_at=“2013-06-01”

原因是日期值不包括最后一天:日期常量在午夜转换为时间戳。您正在这些值之间进行查询:

2013-06-01 00:00:00
2013-07-31 00:00:00
所以只包括最后一天的第一秒

试试这个:

select count(*)
from users
where created_at>="2013-06-01"
and created_at<="2013-07-31 23:59:59"
选择计数(*)
来自用户
创建地点>=“2013-06-01”
并创建了_at=“2013-06-01”

和created_at created_at列的类型是什么?如果恰好是基于字符的列而不是日期列,则可能无法按预期进行比较。在列中创建的_的类型是什么?如果它恰好是一个基于字符的列,而不是一个日期列,则可能无法按预期进行比较。