【问题标题】:MySQL: Search by substringsMySQL:按子字符串搜索
【发布时间】:2016-10-03 07:56:11
【问题描述】:

我有一个如下所示的数据库表:

Datum_Dag           | kWh_Dag
-----------------------------
2016-10-03 08:35:00 | 0.005
2016-10-03 08:30:00 | 0.004

2016-10-02 19:15:00 | 19.019
2016-10-02 19:10:00 | 19.019
2016-10-02 19:05:00 | 19.015
2016-10-02 19:00:00 | 19.011
2016-10-02 18:55:00 | 19.004

如您所见,每天的最后一个条目包含当天收集的能量总和。我想检索几天内的这些每日值(例如上周)。由于日期也包含时间,我正在努力使用正确的查询语句。

行“Datum_Dag”的类型为“datetime”。

我试过了:

SELECT
    Datum_Dag,
    SUBSTRING(
        `Datum_Dag`,
        1,
        10
    ) AS this_will_be_grouped,
    MAX(kWh_Dag)
FROM
    `tgeg_dag`
WHERE
    this_will_be_grouped > DATE_SUB(NOW(),INTERVAL 1 WEEK)
GROUP BY
    this_will_be_grouped

但日期范围不起作用。

有什么想法吗?

非常感谢!

【问题讨论】:

  • 试试这个...WHERE this_will_be_grouped > DATE_SUB(CURDATE(),INTERVAL 1 WEEK)...

标签: mysql substring greatest-n-per-group


【解决方案1】:

请试一试:

SELECT
    DATE(Datum_Dag) AS this_will_be_grouped,
    MAX(kWh_Dag)
FROM
    `tgeg_dag`
WHERE
    Datum_Dag > DATE_SUB(CURDATE(),INTERVAL 1 WEEK)
GROUP BY
    this_will_be_grouped

注意:

  • Alias 不能在同一个 select 语句的 where 子句中引用。

  • Date(timestamp) 返回日期部分

  • DATE_SUB(CURDATE(),INTERVAL 1 WEEK) 全天返回相同的date

  • DATE_SUB(NOW(),INTERVAL 1 WEEK) 每秒返回不同的timestamp

【讨论】:

    【解决方案2】:

    这是由于Where

    你应该使用

    where SUBSTRING(`Datum_Dag`,1,10) > DATE_SUB(NOW(),INTERVAL 1 WEEK)
    or 
    Where Datum_Dag > DATE_SUB(NOW(),INTERVAL 1 WEEK)
    

    您最好使用cast(Datum_Dag as date) 来转换为日期格式,而不是使用SUBSTRING

    【讨论】:

      【解决方案3】:

      如果 kWh_Dag 可以下降(即,是否存在负能量收集?)那么您应该获取每天的最后一条记录,然后获取该记录的能量。

      使用子查询获取每天最新记录的日期/时间,然后将其与表连接起来以获取该记录的详细信息:-

      SELECT b.Datum_Dag,
          a.the_day,
          b.kWh_Dag
      FROM
      (
          SELECT DATE(Datum_Dag) AS the_day, MAX(Datum_Dag) AS max_date_time
          FROM `tgeg_dag`
          WHERE Datum_Dag > DATE_SUB(NOW(),INTERVAL 1 WEEK)
          GROUP BY the_day
      ) sub0
      INNER JOIN `tgeg_dag` b
      ON sub0.max_date_time = b.Datum_Dag
      

      【讨论】:

        猜你喜欢
        • 2014-01-07
        • 2015-02-28
        • 2019-05-06
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        • 2019-10-06
        相关资源
        最近更新 更多