我正在构建一个查询,通过时间戳列值搜索表。我要传递给api的格式的一个例子是2018-10-10。用户具有选择日期范围的能力。通常情况下,日期范围的开始日期是2018-10-10,而结束日期是同一天,2018-10-10。下面这些似乎没什么用。在不需要指定时间的情况下,最简单的方法是什么?显然,我想查询2018-10-10的整个一天,从开始到结束。
SELECT
count(*)
FROM
contact
WHERE
created_at >= '2018-10-10'
AND created_at <= '2018-10-10';发布于 2018-11-21 18:43:35
这里的问题是Timestamp数据类型也有HH:MM:SS (time)值。在将日期时间与日期进行比较时,MySQL将自动假定00:00:00为日期值的HH:MM:SS。
因此,2018-10-10 12:23:22将不匹配以下条件:created_at <= '2018-10-10';因为它将被视为:2018-10-10 12:23:22 <= '2018-10-10 00:00:00,即false
要处理此问题,可以向日期添加一天(筛选器中的date_to),并使用<运算符进行范围检查。
SELECT
count(*)
FROM
contact
WHERE
created_at >= '2018-10-10'
AND created_at < ('2018-10-10' + INTERVAL 1 DAY);https://stackoverflow.com/questions/53418644
复制相似问题