【问题标题】:How to show records that falls on the date-range using if statement如何使用 if 语句显示日期范围内的记录
【发布时间】:2015-11-26 18:29:44
【问题描述】:

我想显示当年 8 月到当年 12 月期间的所有记录。虽然它不会在 1 月至 6 月显示,但会显示 1 月至 6 月的记录。 如何使用 IF 语句捕捉日期?

这是我的代码:

            $year = date("Y");
            $sem1_start = date("M-d-Y", strtotime("August, 01".$year));
            $sem1_end = date("M-d-Y", strtotime("December, 31".$year));

            $sem2_start = date("M-d-Y", strtotime("January, 01".$year));
            $sem2_end = date("M-d-Y", strtotime("June, 15".$year));

            //sample date from database
            $date = '2015-10-15';
            $date2 = date("M-d-Y", strtotime($date));


            if($date2 >= $sem1_s && $date2 <= $sem1_e){
                //Display all records
            }
            else if($date2 >= $sem2_s && $date2 <= $sem2_e){
                 //Display all records
            }

我想自动显示当前学期(8-12月)的记录,当一月到来时,它会隐藏记录,但会显示第二个学期的记录,即一月到六月。

【问题讨论】:

    标签: php mysql date if-statement date-range


    【解决方案1】:

    您可以使用 between 语句过滤您的 sql 结果。类似的东西

    $query = "select * from db_table where datefield BETWEEN $startdate and $enddate order by datefield asc;

    这样您的结果将始终在范围内并排序以启动

    【讨论】:

    • 最好不要使用 between 语句。包括开始日期吗?包括结束日期吗?更好地使用datefield &gt; $startdate and datefield &lt; $enddate
    • 不是这样。现在您在非整数字段上创建两个内部检查,否则您将使用针对这些情况高度优化的标准内置函数。不过它会起作用。但对于大型数据集,它可能会相当慢。
    • 不是这样。看看this question
    • 也许是这样。但那是整数值。我们现在正在讨论日期值,如果您不使用时间戳,它们基本上是格式化的字符串。字符串搜索总是比整数搜索慢。
    • datefield > $startdate 和 datefield
    【解决方案2】:

    我认为,在数据库中我有一个字段可以节省宝贵的时间

    $time = time();
    

    当我想从当年的 8 月到当年的 3 月 12 日进行搜索时,我将执行以下操作

    $timeSearchStart = strtotime(date('Y') . '-8-1 00:00:00');
    $timeSearchEnd = strtotime(date('Y') . '-12-31 23:59:59');
    $query = "SELECT * FROM `table` WHERE `fieldSaveTime` > '" . $timeSearchStart . "' && `fieldSaveTime` < '" . $timeSearchEnd  . "'";
    

    【讨论】:

    • 我用这个 $timeSearchStart = strtotime(date('Y') . '-8-1 00:00:00');分配日期,但我的问题是我的 IF 语句无法捕获数据库中的日期
    • @its.L.A 您必须使用 time() 函数在 fieldSaveTime 中节省时间,否则您可以更改它
    猜你喜欢
    • 1970-01-01
    • 2017-04-28
    • 2014-06-29
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多