Mysql根据时间列出记录

时间:2011-06-20 09:46:45

标签: mysql

我使用了以下查询来获取与WHERE子句中给定时间匹配的所有记录。但我得到了不同的结果。如果您查看tat图片,您可以看到2条记录有分钟<> 30但它仍被列为查询结果。但是,如果我改变小时他们没有列出。可能是什么问题?

SELECT * FROM pos_takeaways WHERE STR_TO_DATE(time,'%d/%m/%y %H:%U:%S') = STR_TO_DATE('20/6/2011 22:30:00','%d/%m/%Y %H:%U:%S')

输出: enter image description here

2 个答案:

答案 0 :(得分:2)

我认为有两个问题:

  1. 您的查询应使用“< =”而不是“=”。
  2. 而不是%U,在STR_TO_DATE的参数中使用%i(%U代表周数)

    SELECT * 来自pos_takeaways 在STR_TO_DATE(时间,'%d /%m /%y%H:%i:%S')< = STR_TO_DATE('20 / 6/2011 22:30:00','%d /%m /% Y%H:%i:%S');

  3. 希望这有帮助。

答案 1 :(得分:1)

似乎MySQL中的STR_TO_DATE函数存在问题,请检查http://bugs.mysql.com/bug.php?id=56271。因此,如果您使用旧版本的MySQL(6个月大),那么这可能是原因,您应该考虑升级MySQL。如果这不是问题,请尝试在两个字段中使用相同的值BETWEEN ANDOperator Between。不要忘记检查有关将其用于DATE比较

的警告