【问题标题】:Increment days in PHP MySQL date [duplicate]PHP MySQL日期的增量天数[重复]
【发布时间】:2017-09-13 10:46:36
【问题描述】:

我在 MySQL 中有一个包含标准日期值(“2017-04-17”、“2017-04-18”等)的日期字段(称为 NDate)的表。

通过 PHP 网页,我试图获取系统日期(比如今天是 2017-04-17),然后从上表中提取 NDate="2017-04-17" 的所有行。到这里为止没有问题。

我需要增加这一天(从今天开始并持续接下来的 10 天 - 即 2017-04-17 到 2017-04-26),并且每天在不同的标题下报告条目,例如“条目2017-04-17" 将列出 NDate 为 2017-04-17 的所有行,"Entries for 2017-04-18" 将列出所有 NDate 为 2017-04-18 的行。

我试图使用带有 PHP date_modify 函数的 for 循环来逐一递增天数,但它没有显示任何结果。
以下是选定的代码片段:

date_default_timezone_set('US/Eastern');
$datev = date("Y-m-d");
for ($x = 0; $x <= 10; $x++) 
{
    $datev=date_modify($date,"+$x days");
    echo "before date format<br>";      // echo statement 1
    echo "date is: $datev <br>";        // echo statement 2
    $sql = "SELECT * FROM tablename where Ndate='$datev'";
    echo "before result<br>";           // echo statement 3
    ...
    ...
    ...
}  

网页上的输出仅显示语句 1。但未打印 echo stats 2 和 3。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    试试这个:

    $start = strtotime(date('Y-m-d'));
    $end = strtotime(date('Y-m-d', strtotime('+10 days')));
    while($start <= $end)
    {
        $date = date('Y-m-d', $start);
        //use $date to do stuff
        //SELECT * FROM tablename where Ndate='$date'
        $start = strtotime("+1 day", $start);
    }
    

    【讨论】:

    • 您好@gaganshera,感谢您的及时回复。您是否还可以阐明确切的 SQL 语句应该是什么:"$sql = "SELECT * FROM tablename where Ndate='$start";"没有返回任何结果...回显 $start (当它的值为“2017-04-17”时,发布的值为“1492412400”
    • 做或不做。没有“尝试”。 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度>
    • @user6337701 1492412400 是unix timestamp,以数字形式表示日期。另外,请查看我在查询答案中的评论
    • 谢谢@gaganshera。虽然 Ozgur 的代码在第一枪中就可以工作,但您的代码也在编辑后完成了工作。也为你 +1
    【解决方案2】:

    您可以使用 strtotime 函数作为日期函数的参数来增加天数。

    对于 10 天,您可以使用 for 循环来构建天数数组。然后对其进行迭代,以执行您需要的查询。

    $today = date('Y-m-d');
    $dates=array($today);
    for($i=1;$i<10;$i++) {
        $NewDate=date('Y-m-d', strtotime("+".$i." days"));
        $dates[]=$NewDate;
    }
    
    foreach($dates as $dt) {
        // sql stuff here
        echo "date is: $dt <br>";
        $sql = "SELECT * FROM tablename where Ndate='$dt'";
         echo "before result<br>";
        // .....
    }
    

    此代码应该适用于您的情况。如果有任何问题,请告诉我。

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度>
    • @JayBlanchard 你又是对的?我添加了代码示例的信息
    • 我应该查看您的其他答案吗?或者你会花时间回去添加任何需要的信息/解释吗?
    • 你好@Ozgur。万分感谢。这非常适合我的问题。 “@Jay Blanchard”,感谢您指出另一个类似的问题。但是,请注意,与仅关注 PHP 的另一个问题相比,这个问题结合了 PHP 的代码及其对 SQL 的使用,这就是为什么标题说“PHP MySQL 日期的增量天数”的原因。再次感谢 :-) 如果需要任何编辑,请告诉我。
    • @user6337701 我可以为它投票吗? ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2016-04-18
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2011-09-18
    • 2021-10-06
    相关资源
    最近更新 更多