将mySQL默认时间从00:00:00更改为23:59:59

时间:2012-10-04 13:19:29

标签: 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-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");

2 个答案:

答案 0 :(得分:1)

慢 - 将列强制转换为DATE类型:

... WHERE DATE(column_yyyymmddhhmmss) BETWEEN fromdate AND todate

更快 - 强制上限到DATETIME,包括最后一秒:

... WHERE column_yyyymmddhhmmss BETWEEN user_fromdate AND CONCAT(user_todate, '23:59:59');

答案 1 :(得分:1)

您应该使用><运算符代替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

中查看