【问题标题】:How to get only date from datetime field of one mysql table, merge similar dates and update another table by a cron job如何从一个mysql表的日期时间字段中仅获取日期,合并相似的日期并通过cron作业更新另一个表
【发布时间】:2020-04-11 07:03:48
【问题描述】:

在我现有的 Mysql 数据库中,我有一个类似下面的表 recent_history,它有大约 200k 行

id  report      date
1   arpit       2019-12-17 22:12:27
2   vikas       2019-12-18 08:37:23
3   mohit       2019-12-18 13:03:35

现在我创建了另一个名为 all_dates 的表,其中包含字段 id (auto_increment) 和 date(text),并希望通过每天更新的 Cron 作业合并类似的日期,从 recent_history 表中仅获取此字段中的日期每天都这样,所以我可以根据 id 的升序获取最新日期。

id      date
1   2019-12-18
2   2019-12-17

我刚刚开始学习那些技术知识。我知道如何设置 cron 作业,但不知道如何为其编写脚本。我已经搜索了很多关于 Datetime 和其他主题的答案,但无法在单个 PHP 脚本中编写以上 3 个步骤。

【问题讨论】:

    标签: php mysql date datetime cron


    【解决方案1】:

    要获取日期时间行的唯一日期,您可以使用:

    $date = '2019-12-17 22:12:27';
    $adjusted_date = date('Y-m-d', strtotime($date));
    

    您需要查询日期格式为 '2019-12-17 22:12:27 的表,以获取所需的列,即日期,按从新到旧日期的降序排列。所以你需要知道如何连接MySQL,寻找PDO是你在使用PHP时最常用的连接数据库的方式。

    这里是一个示例,如何使用从数据库返回的数据进行查询和制作:

    <?php
    
    try {
        $db = new PDO('mysql:host=host_name;dbname=database_name', 'user_name', 'password');
    }
    catch (PDOException $e) {
        echo "Error database connection: ", $e->getMessage();
    }
    
    $query  = "
        SELECT date FROM table_name
        ORDER BY date DESC
    ";
    
    $data = $db->prepare($query);       
    
    if ($data) {
        $data->execute();
        $result = $data->fetchALL();
        if ($result) {
            // assign the query result to a variable
            $date = $result;
        } else {
           echo "The query do not return rows.";
        }
    } else {
        echo "Error to prepare query.";
    }
    
    $date_adjusted = [];
    
    foreach ($date as $key => $value) {
        $date_adjusted[$key] = date('Y-m-d', strtotime($value));
    }
    

    您可以看到具有所需格式的日期数组,如下所示。

    var_dump($date_adjusted);

    然后,您可以遍历 $date_ajusted 数组并将它的每个值插入到您想要的表中。正如你所说,ID的顺序将根据日期顺序,基本上就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 2021-08-16
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多