Search code examples
phpmysqloptimizationdate

The best way to get the first and last day of last month?


I'm looking for the best way to get the first and the last day of a last month. I use them for make SQL queries to get stats of last month.

I think that this is the best way, more optimized but not more comprensive, anyone have another way to do the same?

    $month_ini = date("Y-m-d", mktime(0, 0, 0, date("m", strtotime("-1 month")), 1, date("Y", strtotime("-1 month"))));

    $month_end = date("Y-m-d", mktime(0, 0, 0, date("m", strtotime("-1 month")), date("t", strtotime("-1 month")), date("Y", strtotime("-1 month"))));

Thanks!!


Solution

  • In PHP 5.3, you can use the DateTime class :

    <?php
    
    $month_ini = new DateTime("first day of last month");
    $month_end = new DateTime("last day of last month");
    
    echo $month_ini->format('Y-m-d'); // 2012-02-01
    echo $month_end->format('Y-m-d'); // 2012-02-29