首页 文章

mysql:不兼容日期之间

提问于
浏览
2

我正在使用格式化日期编写一个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 回答

  • 2

    您不能采用两个任意字符串(如 30-03-2016 )并期望 BETWEEN 的行为与真正的 DATE 列(一种硬编码到mySQL中的行为)相似 .

    您需要使用 BETWEEN 的真实 DATE 值才能正常工作 .

    • 如果列已经是 DATE 列,只需跳过格式:
    SELECT shop_id, registered_time FROM shops where registered_time 
    BETWEEN '2016-03-09' AND '2016-04-19'
    

    如果您现有的列是 DD-MM-YYYY 格式,请使用STR_TO_DATE()将它们转换为日期 - 或者为了此查询(sloooowwwww!)而永久地将其转换为日期 .

  • -1

    您需要将您的字符串转换回MySQL理解的日期 . 从文档:

    CAST(datetime_col AS DATE)
    

    应该有助于实现你想要的 .

    Reference

  • 1

    做这个:

    select col_one,col_two from table_name where date_col between date('2018-11-10') AND date('2018-11-10');
    

    我有同样的问题,然后我尝试了这个并且它有效 . 祝好运!

相关问题