我有一列包含类似 2012-09-09 13:20:00
的数据,当我尝试使用以下查询查询表时,它不包含数据迄今为止。
Procedure test (IN fromdate date, IN todate date)
Select * from table where date between fromdate and todate
假设用户输入 2012-08-10
到 2012-09-09
,那么它不包括 9 月 9 日的数据。但是,如果我将截止日期更改为 2012-09-10
,那么它将包含数据。似乎当没有包含时间时,mySQL 默认为午夜或 00:00:00
有没有办法改变它或解决这个问题?例如,在某个阶段加入时间 (23:59:59) 到 todate
?即使用以下
set todate = todate.STR_TO_DATE("23:59:59");
最佳答案
你应该使用 >
和 <
运算符而不是 BETWEEN
因为它不包含日期(假设您的列是 datetime
)。如果您只指定 2011-01-31
, 它相当于 2011-01-31 00:00:00
.
例子:
SELECT * FROM t1 WHERE date > DATE_SUB(fromdate, INTERVAL 1 SECOND)
AND date < DATE_ADD(todate, INTERVAL 1 DAY)
参见 action
关于mysql - 从 00 :00:00 to 23:59:59 更改 mySQL 默认时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12728209/