【问题标题】:Creating correct date format for SELECT...BETWEEN query为 SELECT...BETWEEN 查询创建正确的日期格式
【发布时间】:2012-12-18 21:32:17
【问题描述】:

我有 2 个变量组成一个日期范围,然后需要在 MySQL 数据库中进行搜索。

格式为“2011 年 4 月”和“2012 年 3 月”等。

我的 SELECT...BETWEEN 查询需要“2011-04-01”和“2012-03-31”,那么最好的方法是什么...

先在 PHP 中转换日期?

或者有没有办法编写查询以使用原始格式进行搜索?我尝试使用 date_format (date, '%b, %Y') 但查询一无所获。

【问题讨论】:

    标签: php mysql date select


    【解决方案1】:

    试试这个:

    SELECT * FROM tablename 
    WHERE dateCol BETWEEN DATE_ADD(DATE(STR_TO_DATE('Apr, 2011', '%b, %Y')), INTERVAL 1 DAY) AND LAST_DAY(STR_TO_DATE('Mar, 2012', '%b, %Y'));
    

    查看SQL FIDDLE DEMO

    【讨论】:

    • 嗨。您的查询有效,但它不假定该月在 31 日结束吗?如果不是这种情况会发生什么,会导致问题吗?
    • @highfidelity 检查我更新的答案,它将在本月的最后一天找到
    • 更新:实际上查询没有找到日期为当月最后一天的记录,即 2012 年 3 月 31 日 - 有什么想法吗?
    • 有什么问题?用 sqlfiddle 演示解释它,因为根据我它应该可以工作
    • 我已经从我这边检查过了,它工作正常。如果它对你不起作用,那就向我解释一下这种情况。
    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多