This question为我们提供了如何在不使用时间因素的情况下查询两个日期的答案,就像这样
SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date >= '2012-05-03'
AND order_date < '2012-05-04'
如果我们有以下日期
我们用这个
WHERE order_date >= '2012-05-01'
AND order_date < '2012-05-04'
它只会输出2012-05-02
而不会输出 2012-05-04
问题:如何在结果中加入2012-05-04
?我不希望我的用户选择2012-05-05
只输出2012-05-04
。
答案 0 :(得分:1)
Mode2ViewController.deinit()
一天的持续时间为24小时,但这可以用非常小的单位来衡量,所以23:59:59不是持续时间的最后一点。 MySQL现在支持几分之一秒,所以请不要依赖于23:59:59看http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html
唯一的始终准确方法是使用少于下一天。
如果您不希望您的用户看到第二天的值,只需选择结束日期,但在代码中添加1天。 e.g。
WHERE order_date >= '2012-05-01'
AND order_date < '2012-05-05'
答案 1 :(得分:0)
将<
更改为<=
,因为<
表示它不包含与该日期匹配的日期
SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date >= '2012-05-01'
AND order_date <= '2012-05-04'
您也可以使用BETWEEN
SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date BETWEEN '2015-05-01' AND '2012-05-04'
这假设order_date
的数据类型为DATE
,而不是DATETIME
。如果是DATETIME
,则需要确保时间部分为00:00:00
,因为这是将DATE
转换为{{{}时使用的默认时间1}}。或者,您可以在查询的结束时间中加入明确的DATETIME
,例如Cary Bondoc的答案。
答案 2 :(得分:-1)
为查询添加修复时间
order_date >= '2012-05-03 00:00:00' AND order_date <= '2012-05-04 23:59:59'
2012-05-03 00:00:00 表示我们要在2012-05-03
2012-05-04 23:59:59 表示我们希望在2012-05-04
所以你的查询就像这样
SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date >= '2012-05-03 00:00:00'
AND order_date <= '2012-05-04 23:59:59'