使用DATE_ADD完成tstamp列

时间:2014-12-26 20:34:23

标签: mysql dateadd

我希望你们圣诞节过得愉快! 我想知道,当列是tstamp时,有没有办法使用或应用COALESCE? 所以当tstamp是这样的时候:

|       tstamp          |
| 2014-12-25 00:01:00   |
| 2014-12-25 00:02:00   |
| 2014-12-25 00:05:00   |
| 2014-12-25 00:07:00   |
| 2014-12-25 00:08:00   |

我想如果我使用coalesce hen我可以填写缺少的时间并让tstamp列看起来像这样:

|       tstamp          |
| 2014-12-25 00:01:00   |
| 2014-12-25 00:02:00   |
| 2014-12-25 00:03:00   |
| 2014-12-25 00:04:00   |   
| 2014-12-25 00:05:00   |
| 2014-12-25 00:06:00   |   
| 2014-12-25 00:07:00   |
| 2014-12-25 00:08:00   |

有可能吗?使用COALESCE获得我想要的输出是否正确?建议总是受到赞赏。谢谢


更新

我想我可以使用像DATE_ADD这样的东西,就像这样做

SELECT DATE_ADD('2014-12-25 00:00:00', INTERVAL 1 MINUTE)

但我不确定如何让它工作,因为当我执行该查询时我只有一行..

SELECT DATE_ADD('2014-12-25 00:01:00', INTERVAL 1 MINUTE)

任何想法?谢谢

2 个答案:

答案 0 :(得分:0)

不,这是不可能的,因为COALESCE()功能的使用不正确。 COALESCE()函数用于从提供的值列表中选择/获取第一个NON NULL值作为参数。

答案 1 :(得分:0)

如果你今天每分钟都将一个名为tstamp的列填充到一个表中(称之为mydb.mytable),你可以这样做

首先进行一天生成每分钟的查询

SELECT H*60+HRMIN MINVAL FROM
(SELECT  0 H UNION SELECT  1 UNION SELECT  2 UNION SELECT  3 UNION
SELECT   4   UNION SELECT  5 UNION SELECT  6 UNION SELECT  7 UNION 
SELECT   8   UNION SELECT  9 UNION SELECT 10 UNION SELECT 11 UNION 
SELECT  12   UNION SELECT 13 UNION SELECT 14 UNION SELECT 15 UNION 
SELECT  16   UNION SELECT 17 UNION SELECT 18 UNION SELECT 19 UNION 
SELECT  20   UNION SELECT 21 UNION SELECT 22 UNION SELECT 23) A,
(SELECT MT*10+MU HRMIN FROM
(SELECT 0 MT UNION SELECT 1 UNION SELECT 2 UNION
SELECT 3 UNION SELECT 4 UNION SELECT 5) AA,
(SELECT 0 MU UNION SELECT 1 UNION SELECT 2
UNION SELECT 3 UNION SELECT 4 UNION SELECT 5
UNION SELECT 6 UNION SELECT 7 UNION SELECT 8
UNION SELECT 9) BB) B ORDER BY MINVAL;

将其更改为今天每分钟创建

SELECT DATE(NOW()) + INTERVAL H*60+HRMIN MINUTE MINVAL FROM
(SELECT  0 H UNION SELECT  1 UNION SELECT  2 UNION SELECT  3 UNION
SELECT   4   UNION SELECT  5 UNION SELECT  6 UNION SELECT  7 UNION 
SELECT   8   UNION SELECT  9 UNION SELECT 10 UNION SELECT 11 UNION 
SELECT  12   UNION SELECT 13 UNION SELECT 14 UNION SELECT 15 UNION 
SELECT  16   UNION SELECT 17 UNION SELECT 18 UNION SELECT 19 UNION 
SELECT  20   UNION SELECT 21 UNION SELECT 22 UNION SELECT 23) A,
(SELECT MT*10+MU HRMIN FROM
(SELECT 0 MT UNION SELECT 1 UNION SELECT 2 UNION
SELECT 3 UNION SELECT 4 UNION SELECT 5) AA,
(SELECT 0 MU UNION SELECT 1 UNION SELECT 2
UNION SELECT 3 UNION SELECT 4 UNION SELECT 5
UNION SELECT 6 UNION SELECT 7 UNION SELECT 8
UNION SELECT 9) BB) B ORDER BY MINVAL;

现在,将它们插入表格

INSERT IGNORE INTO mydb.mytable (tstamp)
SELECT DATE(NOW()) + INTERVAL H*60+HRMIN MINUTE MINVAL FROM
(SELECT  0 H UNION SELECT  1 UNION SELECT  2 UNION SELECT  3 UNION
SELECT   4   UNION SELECT  5 UNION SELECT  6 UNION SELECT  7 UNION 
SELECT   8   UNION SELECT  9 UNION SELECT 10 UNION SELECT 11 UNION 
SELECT  12   UNION SELECT 13 UNION SELECT 14 UNION SELECT 15 UNION 
SELECT  16   UNION SELECT 17 UNION SELECT 18 UNION SELECT 19 UNION 
SELECT  20   UNION SELECT 21 UNION SELECT 22 UNION SELECT 23) A,
(SELECT MT*10+MU HRMIN FROM
(SELECT 0 MT UNION SELECT 1 UNION SELECT 2 UNION
SELECT 3 UNION SELECT 4 UNION SELECT 5) AA,
(SELECT 0 MU UNION SELECT 1 UNION SELECT 2
UNION SELECT 3 UNION SELECT 4 UNION SELECT 5
UNION SELECT 6 UNION SELECT 7 UNION SELECT 8
UNION SELECT 9) BB) B ORDER BY MINVAL;

如果已有分钟,我使用了INSERT IGNORE

试一试!!!