我有一个包含以下各列的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>
答案 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对数据库执行该操作。