【问题标题】:how to select row in mysql on basis of 3 different column如何根据 3 个不同的列在 mysql 中选择行
【发布时间】:2016-02-05 04:07:30
【问题描述】:

我有一个包含报告的表格,我想选择过去 7 天的数据。因此,在下图中,您可以看到 3 列日月年。

选择过去 7 天的 sql 查询是什么。

【问题讨论】:

  • 过去 7 天是关于 哪个 日期的?你的问题我不清楚。
  • 为什么要这样存储您的日期,而不是简单地在一列中存储日期类型?
  • @ankit-pundir 您应该将日期存储在单列中
  • 我想将数据存储在单列中,但由于性能原因,我尝试单独存储。我在一个月内可能有 100 万行,并且每个月都在成长。所以campare字符串比比较数字慢。这就是 Facebook 以数字格式存储其用户 ID 的原因。

标签: mysql


【解决方案1】:

试试这样的,

    SELECT 
            *    
    FROM 
            < your_table > 
    WHERE 
            STR_TO_DATE(CONCAT(`day`, ',', `month`, ',' ,`year`), '%e,%m,%y') 
            BETWEEN 
            DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE(); 

如果你想使用同一张表中的最新日期,

尝试使用查询单独获取最大日期,

SELECT MAX(STR_TO_DATE(CONCAT(`day`, ',', `month`, ',' ,`year`), '%e,%m,%y')) AS maxdat FROM < your_table > 

存储它,并在主查询中代替 CURDATE() 使用它,

或者,

如果您没有任何性能问题,您可以使用与子查询相同的查询。

【讨论】:

    【解决方案2】:

    您希望最近 7 天进入的依据。

    试试这个找出 7 天之前的日期:

    WHERE t.date >= DATE_ADD(CURDATE(), INTERVAL -7 DAY);
    

    WHERE t.date >= DATE(NOW()) - INTERVAL 7 DAY
    

    或者您可以查看Date_doc 文档。

    【讨论】:

    • 根据此数据过去 7 天。不是最后 7 个条目。
    • 使用上面的命令,即使你不会得到完美的条目然后通过那个日期文档
    猜你喜欢
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多