在一段时间内从php用日期填充mysql

时间:2018-08-06 09:31:53

标签: php mysql date

我有一个包含以下各列的mysql表: 日期,公里

我想用日期(例如)作一些行。 2018年1月1日至2018年2月20日。

“ Km”列中的值必须为0。

如何使用PHP和mysql做到这一点?

我无法完成这项工作:

 <agm-marker  *ngFor="let k of marker|keyconductores" 
                  [latitude]="{{marker[k].lat}}" 
                  [longitude]="{{marker[k].lng}}" >
  </agm-marker>

2 个答案:

答案 0 :(得分:0)

为我工作...(但是确实需要有效的日期范围)

DELIMITER $

CREATE PROCEDURE fill_calendar(start_date Date, end_date Date)
BEGIN
  DECLARE crt_date Date;
  SET crt_date=start_date;
  WHILE crt_date < end_date DO
    INSERT INTO run VALUES(crt_date);
    SET crt_date = ADDDATE(crt_date, INTERVAL 1 DAY);
  END WHILE;
END
$

-- Query OK, 0 rows affected (0.03 sec)

DELIMITER ;


CREATE TABLE run(crt_date DATE NOT NULL);

-- Query OK, 0 rows affected (2.14 sec)

CALL fill_calendar('2018-01-01', '2018-02-20');

-- Query OK, 1 row affected (0.52 sec)

SELECT * FROM run;
+------------+
| crt_date   |
+------------+
| 2018-01-01 |
| 2018-01-02 |
| 2018-01-03 |
| 2018-01-04 |
| 2018-01-05 |
| 2018-01-06 |
| 2018-01-07 |
| 2018-01-08 |
| 2018-01-09 |
| 2018-01-10 |
| 2018-01-11 |
| 2018-01-12 |
| 2018-01-13 |
| 2018-01-14 |
| 2018-01-15 |
| 2018-01-16 |
| 2018-01-17 |
| 2018-01-18 |
| 2018-01-19 |
| 2018-01-20 |
| 2018-01-21 |
| 2018-01-22 |
| 2018-01-23 |
| 2018-01-24 |
| 2018-01-25 |
| 2018-01-26 |
| 2018-01-27 |
| 2018-01-28 |
| 2018-01-29 |
| 2018-01-30 |
| 2018-01-31 |
| 2018-02-01 |
| 2018-02-02 |
| 2018-02-03 |
| 2018-02-04 |
| 2018-02-05 |
| 2018-02-06 |
| 2018-02-07 |
| 2018-02-08 |
| 2018-02-09 |
| 2018-02-10 |
| 2018-02-11 |
| 2018-02-12 |
| 2018-02-13 |
| 2018-02-14 |
| 2018-02-15 |
| 2018-02-16 |
| 2018-02-17 |
| 2018-02-18 |
| 2018-02-19 |
+------------+
50 rows in set (0.00 sec)

答案 1 :(得分:0)

不确定为什么要使用存储过程。您只需要一个items查询,例如

INSERT

这将打印(为简洁起见,省略了一些值)

$period = new DatePeriod(
    new DateTimeImmutable('2018-01-01 00:00:00'),
    new DateInterval('P1D'),
    new DateTimeImmutable('2018-02-20 23:59:59')
);

$values = implode(',', array_map(
    function(DateTimeInterface $dt) {
        return sprintf('(%s)', $dt->format('Y-m-d'));
    },
    iterator_to_array($period)
));

echo "INSERT INTO run VALUES $values";

然后您可以使用所选的db lib对数据库执行该操作。