我正在使用格式化日期编写一个Between查询..这是我的查询:
选择shop_id,date_format(registered_time,'%d-%m-%Y')作为Date FROM商店,其中(date_format(registered_time,'%d-%m-%Y')BETWEEN '09 -03-2016'AND' 19-04-2016' )
但是,当我执行查询时,无论月份如何,它都只提供日期09和19之间的记录 . 例如,我有像 30-03-2016, 31-03-2016 这样的记录..但是它们被忽略了 .
如果有人能找到任何东西,请告诉我..
还有一件事是,我正在从时间戳字段转换此日期 . 我希望这不会引起任何问题 .
3 回答
您不能采用两个任意字符串(如
30-03-2016
)并期望BETWEEN
的行为与真正的DATE
列(一种硬编码到mySQL中的行为)相似 .您需要使用
BETWEEN
的真实DATE
值才能正常工作 .DATE
列,只需跳过格式:如果您现有的列是
DD-MM-YYYY
格式,请使用STR_TO_DATE()将它们转换为日期 - 或者为了此查询(sloooowwwww!)而永久地将其转换为日期 .您需要将您的字符串转换回MySQL理解的日期 . 从文档:
应该有助于实现你想要的 .
Reference
做这个:
我有同样的问题,然后我尝试了这个并且它有效 . 祝好运!