gpt4 book ai didi

mysql - 在sql查询中获取所有24小时

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:41 26 4
gpt4 key购买 nike

我的问题是如何在 select 中选择一天中所有 24 小时作为数据?

有一种更完善的方法可以做到这一点:

select 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
from dual

我的目标数据库是 Mysql,但是一个 sql 标准的解决方案是值得赞赏的!

最佳答案

MySQL 没有递归功能,因此您只能使用 NUMBERS 表技巧 -

  1. 创建一个只包含递增数字的表 - 使用 auto_increment 很容易做到:

    DROP TABLE IF EXISTS `example`.`numbers`;
    CREATE TABLE `example`.`numbers` (
    `id` int(10) unsigned NOT NULL auto_increment,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  2. 使用以下方法填充表格:

    INSERT INTO NUMBERS
    (id)
    VALUES
    (NULL)

    ...您需要多少个值。在这种情况下,INSERT 语句至少需要运行 25 次。

  3. 使用 DATE_ADD构建小时列表,根据 NUMBERS.id 值增加:

    SELECT x.dt
    FROM (SELECT TIME(DATE_ADD('2010-01-01', INTERVAL (n.id - 1) HOUR)) AS dt
    FROM numbers n
    WHERE DATE_ADD('2010-01-01', INTERVAL (n.id - 1) HOUR) <= '2010-01-02' ) x

为什么是数字,而不是日期?

简单 - 可以根据数字生成日期,就像我提供的示例一样。这也意味着使用单个表,而不是每种数据类型一个表。

关于mysql - 在sql查询中获取所有24小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5930399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com