SQL 不返回所有结果之间
SQL between not returning all results
我有这个简单的 Mysql 查询
select *
from reportings
where findcampaign = 1 and
is_click = 1 and
created_at BETWEEN date(2016-11-01) AND date(2016-12-31)
这应该 return findcampaign = 1 和 is_click = 1 的所有行,其中 created_at 日期介于 2016-11-01 和 2016-12-31 之间。
运行 select * from reportings where findcampaign = 1 and is_click = 1
给我 12 行
图像显示这些报告都在这些日期之间,所以我应该得到 12 行。这是从数据库中获取日期和日期之间的正确方法吗,即使我的 created_at 具有时间戳值。或者我需要在日期上附加时间吗?
你应该为日期加上引号
select *
from reportings
where findcampaign = 1 and
is_click = 1 and
created_at BETWEEN date('2016-11-01') AND date('2016-12-31')
嘿,我只是个语法错误小伙伴。日期
中需要单个引号
试试这个
select * from reportings where findcampaign = 1 and is_click = 1 and created_at BETWEEN date('2016-11-01') AND date('2016-12-31')
您询问的是将日期与具有 datetime
数据的列进行比较的谓词。如前所述,如果您将日期放在单引号中,那么它应该可以工作,但通常最好更明确地说明正在发生的事情,因为 BETWEEN
在处理日期时可能会造成混淆。
我推荐:
select *
from reportings
where findcampaign = 1 and
is_click = 1 and
created_at >= '2016-11-01 00:00:00' and
created_at <= '2016-12-31 00:00:00';
此条件与您查询中的条件相同,并且非常清楚地表明 2016 年 12 月 31 日 created_at
的所有值都将被排除,从 2016-12-31 00:00:01
到 2016-12-31 23:59:59
.
您可能希望包括 2016 年 12 月 31 日,在这种情况下,您可以将第二个日期更改为 2017-01-01 00:00:00
我有这个简单的 Mysql 查询
select *
from reportings
where findcampaign = 1 and
is_click = 1 and
created_at BETWEEN date(2016-11-01) AND date(2016-12-31)
这应该 return findcampaign = 1 和 is_click = 1 的所有行,其中 created_at 日期介于 2016-11-01 和 2016-12-31 之间。
运行 select * from reportings where findcampaign = 1 and is_click = 1
给我 12 行
图像显示这些报告都在这些日期之间,所以我应该得到 12 行。这是从数据库中获取日期和日期之间的正确方法吗,即使我的 created_at 具有时间戳值。或者我需要在日期上附加时间吗?
你应该为日期加上引号
select *
from reportings
where findcampaign = 1 and
is_click = 1 and
created_at BETWEEN date('2016-11-01') AND date('2016-12-31')
嘿,我只是个语法错误小伙伴。日期
中需要单个引号试试这个
select * from reportings where findcampaign = 1 and is_click = 1 and created_at BETWEEN date('2016-11-01') AND date('2016-12-31')
您询问的是将日期与具有 datetime
数据的列进行比较的谓词。如前所述,如果您将日期放在单引号中,那么它应该可以工作,但通常最好更明确地说明正在发生的事情,因为 BETWEEN
在处理日期时可能会造成混淆。
我推荐:
select *
from reportings
where findcampaign = 1 and
is_click = 1 and
created_at >= '2016-11-01 00:00:00' and
created_at <= '2016-12-31 00:00:00';
此条件与您查询中的条件相同,并且非常清楚地表明 2016 年 12 月 31 日 created_at
的所有值都将被排除,从 2016-12-31 00:00:01
到 2016-12-31 23:59:59
.
您可能希望包括 2016 年 12 月 31 日,在这种情况下,您可以将第二个日期更改为 2017-01-01 00:00:00