【问题标题】:Set date, day, hour, minute, second interval设置日、日、时、分、秒间隔
【发布时间】:2019-05-07 18:31:10
【问题描述】:

我需要在我的查询中设置一个间隔,而不是从另一个范围获取数据。

例如:

1º间隔:18:00

2º间隔:18:14

3º间隔:18:29

4º间隔:18:44

5º 间隔:18:59...

我正在使用此查询来获取间隔和分组..

SELECT date_format(data,"%Y-%m-%d") as data,
date_sub(date_format((sec_to_time(time_to_sec(data)- time_to_sec(data)%(15*60))),"%H:%i"), interval 1 second) AS intervals,...

但间隔会恢复

1º间隔:18:00

2º间隔:18:15

3º间隔:18:30

4º间隔:18:45...

在这些区间中,它们最终会获取属于其他区间的数据。

真正的问题是:

image

将以两个不同的间隔重复信息

【问题讨论】:

  • 我觉得这个问题不难,但是很难理解。为什么包含日期的东西的名称为“数据”?这很令人困惑。即使您的查询很长,我也只看到一个间隔。其他的从哪里来?从分组?有什么问题?我想说的是,有足够多的人看到你的问题,他们只是不知道如何处理它。
  • 我附上了一张图片试图说明问题,是的,不需要完整的查询
  • 您想要“18:14”还是“18:14:59”?如果是前者,只需使用minute 间隔。如果是后者,可能只是显示问题(或您使用 date_format 的副作用)。或者,假设结果在其他地方用于 BETWEEN 子句,只需将 x BETWEEN something and this 更改为 x >= something AND x < this。如果您删除“-1 秒”部分,这甚至会处理可能从 18:14:59.00018:15:00.000 之间的洞中掉下来的东西。

标签: mysql intervals


【解决方案1】:

我使用帮助表,然后使用以下 SQL 查询:

SELECT * 
FROM `system_verlauf` 
WHERE DATE_FORMAT(datum, '%Y%m%d') = DATE_FORMAT(NOW(), '%Y%m%d') 
    AND FIND_IN_SET( DATE_FORMAT(datum , '%H:%i'), ( 
        SELECT GROUP_CONCAT(DATE_FORMAT(uhrzeit, '%H:%i') SEPARATOR ',') 
        FROM `stundentabelle` 
        WHERE `15min` = '1' ) ) 
ORDER BY datum ASC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    相关资源
    最近更新 更多