【问题标题】:Mysql Datetime queriesMysql 日期时间查询
【发布时间】:2011-07-01 12:04:01
【问题描述】:

我是这个论坛的新手。我在构建 MySQL 查询时遇到了麻烦。基本上我想选择数据并使用某种函数以某种方式输出时间戳字段。我知道 dateformat 可以按分钟、天、小时等执行此操作。但请考虑以下几点: 假设现在是下午 12 点 59 分。我希望能够选择过去一天的数据,并根据其时间戳将数据放入两个小时宽的时间“箱”中。
因此,这些箱将是:上午 10:00、上午 8:00、上午 6:00、上午 4:00 等,并且查询将在这些箱之一中转换数据的时间戳。 例如。 数据转换 凌晨 4:45 变为凌晨 4:00, 早上 6:30 变成早上 6:00, 上午 9:55 变为上午 8:00, 上午 10:03 变为上午 10:00, 上午 11:00 变为上午 10:00

有意义吗?垃圾箱的宽度也需要是动态的。我希望我清楚地描述了这个问题,并感谢任何帮助。

【问题讨论】:

  • 可以使用INTERVAL 或仅使用FLOOR 完成垃圾箱。 GROUP BY FLOOR(hour/binsize)*binsize 应该可以帮助您入门。
  • 酷,谢谢。我也想按月执行此操作,其中 binsize 不一定是静态的。

标签: sql mysql


【解决方案1】:

听起来您正在寻找时间的直方图。不确定这是不是真的,但是直方图这个词可能会让你处于一个好地方......就像这个相关的问题:

Getting data for histogram plot

【讨论】:

    【解决方案2】:

    例子:

    每月存储桶:

    GROUP BY YEAR(datestampfield) desc, MONTH(datestampfield) desc

    每小时存储桶,小时数可配置:

    set @rangehrs = 2; select *,FLOOR(HOUR(dateadded)/@rangehrs )*@rangehrs as x from mytable GROUP BY FLOOR(HOUR(dateadded)/@rangehrs )*@rangehrs limit 5;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多