mysql - 从 00 :00:00 to 23:59:59 更改 mySQL 默认时间

标签 mysql sql

我有一列包含类似 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-102012-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/

相关文章:

mysql - 在非键列上连接表并消除重复项?

mysql - 如何让 mysql CASE 或 IF 跳过一条记录?

PHPStorm 表单处理 : PHP variable not echoing, 也不发布到 sql

php - 如何防止 PHP 中的 SQL 注入(inject)?

mysql - SQL考勤数据库设计

PHP 查询 MySQL 函数字符串

mysql - 按月分组并返回结果为 0 的月份按年过滤

Mysql结果减半

python - 如何将我的 ui 表单连接到 mysql 并使用 ui 表单插入数据?

sql - PostgreSQL 查询没有结果数据的目的地