mysql 根据另一列中的时间戳进行更新
mysql update based on time stamp in another column
+------+------+--------------------+--------------------+----------+
| SEQ | ID |instamp |outstamp | duration |
+------+------+--------------------+--------------------+----------+
| 2516 | 1 |2020-02-22 14:22:47 |2020-02-22 14:24:06 | NULL |
| 2517 | 1 |2020-02-22 14:24:08 |2020-02-22 14:24:27 | NULL |
| 2518 | 1 |2020-02-22 14:24:28 |2020-02-22 14:24:47 | NULL |
| 2519 | 1 |2020-02-22 14:24:48 |2020-02-22 14:25:06 | NULL |
| 2520 | 1 |2020-02-22 14:25:08 |2020-02-24 23:14:00 | NULL |
我正在尝试更新最后一个持续时间参数。
如果我这样做
"mysql> SELECT TIMESTAMPDIFF(MINUTE,outTimestamp,intimestamp) from sTable;
这是有效的。但我无法更新最后一列。
我试过了
update sTable rt set duration = (select TIMESTAMPDIFF(MINUTE, outstamp,instamp) from sTable rt1 where rt1.outstamp is not null and rt.seq = rt1.seq) ;
这是一个错误。如果我遗漏了什么,你能告诉我吗?
您更新的子句不正确。
必须是
UPDATE sTable rt SET duration = TIMESTAMPDIFF(MINUTE, outstamp,instamp)
WHERE rt.outstamp IS NOT nulL;
CREATE TABLE sTable (
`SEQ` INTEGER,
`ID` INTEGER,
`instamp` datetime,
`outstamp` datetime,
`duration` INTEGER
);
✓
INSERT INTO sTable
(`SEQ`, `ID`, `instamp`, `outstamp`, `duration`)
VALUES
('2516', '1', '2020-02-22 14:22:47', '2020-02-22 14:24:06', NULL),
('2517', '1', '2020-02-22 14:24:08', '2020-02-22 14:24:27', NULL),
('2518', '1', '2020-02-22 14:24:28', '2020-02-22 14:24:47', NULL),
('2519', '1', '2020-02-22 14:24:48', '2020-02-22 14:25:06', NULL),
('2520', '1', '2020-02-22 14:25:08', '2020-02-24 23:14:00', NULL);
✓
SELECT TIMESTAMPDIFF(MINUTE,outstamp,instamp) from sTable;
| TIMESTAMPDIFF(MINUTE,outstamp,instamp) |
| -------------------------------------: |
| -1 |
| 0 |
| 0 |
| 0 |
| -3408 |
update sTable rt set duration = TIMESTAMPDIFF(MINUTE, outstamp,instamp)
where rt.outstamp is not null ;
✓
SELECT * FROM sTable;
SEQ | ID | instamp | outstamp | duration
---: | -: | :------------------ | :------------------ | -------:
2516 | 1 | 2020-02-22 14:22:47 | 2020-02-22 14:24:06 | -1
2517 | 1 | 2020-02-22 14:24:08 | 2020-02-22 14:24:27 | 0
2518 | 1 | 2020-02-22 14:24:28 | 2020-02-22 14:24:47 | 0
2519 | 1 | 2020-02-22 14:24:48 | 2020-02-22 14:25:06 | 0
2520 | 1 | 2020-02-22 14:25:08 | 2020-02-24 23:14:00 | -3408
db<>fiddle here
+------+------+--------------------+--------------------+----------+
| SEQ | ID |instamp |outstamp | duration |
+------+------+--------------------+--------------------+----------+
| 2516 | 1 |2020-02-22 14:22:47 |2020-02-22 14:24:06 | NULL |
| 2517 | 1 |2020-02-22 14:24:08 |2020-02-22 14:24:27 | NULL |
| 2518 | 1 |2020-02-22 14:24:28 |2020-02-22 14:24:47 | NULL |
| 2519 | 1 |2020-02-22 14:24:48 |2020-02-22 14:25:06 | NULL |
| 2520 | 1 |2020-02-22 14:25:08 |2020-02-24 23:14:00 | NULL |
我正在尝试更新最后一个持续时间参数。 如果我这样做
"mysql> SELECT TIMESTAMPDIFF(MINUTE,outTimestamp,intimestamp) from sTable;
这是有效的。但我无法更新最后一列。
我试过了
update sTable rt set duration = (select TIMESTAMPDIFF(MINUTE, outstamp,instamp) from sTable rt1 where rt1.outstamp is not null and rt.seq = rt1.seq) ;
这是一个错误。如果我遗漏了什么,你能告诉我吗?
您更新的子句不正确。 必须是
UPDATE sTable rt SET duration = TIMESTAMPDIFF(MINUTE, outstamp,instamp)
WHERE rt.outstamp IS NOT nulL;
CREATE TABLE sTable ( `SEQ` INTEGER, `ID` INTEGER, `instamp` datetime, `outstamp` datetime, `duration` INTEGER );
✓
INSERT INTO sTable (`SEQ`, `ID`, `instamp`, `outstamp`, `duration`) VALUES ('2516', '1', '2020-02-22 14:22:47', '2020-02-22 14:24:06', NULL), ('2517', '1', '2020-02-22 14:24:08', '2020-02-22 14:24:27', NULL), ('2518', '1', '2020-02-22 14:24:28', '2020-02-22 14:24:47', NULL), ('2519', '1', '2020-02-22 14:24:48', '2020-02-22 14:25:06', NULL), ('2520', '1', '2020-02-22 14:25:08', '2020-02-24 23:14:00', NULL);
✓
SELECT TIMESTAMPDIFF(MINUTE,outstamp,instamp) from sTable;
| TIMESTAMPDIFF(MINUTE,outstamp,instamp) | | -------------------------------------: | | -1 | | 0 | | 0 | | 0 | | -3408 |
update sTable rt set duration = TIMESTAMPDIFF(MINUTE, outstamp,instamp) where rt.outstamp is not null ;
✓
SELECT * FROM sTable;
SEQ | ID | instamp | outstamp | duration ---: | -: | :------------------ | :------------------ | -------: 2516 | 1 | 2020-02-22 14:22:47 | 2020-02-22 14:24:06 | -1 2517 | 1 | 2020-02-22 14:24:08 | 2020-02-22 14:24:27 | 0 2518 | 1 | 2020-02-22 14:24:28 | 2020-02-22 14:24:47 | 0 2519 | 1 | 2020-02-22 14:24:48 | 2020-02-22 14:25:06 | 0 2520 | 1 | 2020-02-22 14:25:08 | 2020-02-24 23:14:00 | -3408
db<>fiddle here