【问题标题】:MySQL select * from last 5 days from a datetime fieldMySQL select * from last 5 days from a datetime field
【发布时间】:2013-10-24 11:03:04
【问题描述】:

我有一张像这样的桌子

id  datetime  tick_info(string)
0  16-10-2013 3:33:01  "33300"
1  17-10-2013 5:04:01  "003023"
2  17-10-2013 6:12:04  "3244"
3  19-10-2013 5:32:12  "3333332"
4  20-10-2013 8:14:44  "33321"
5  20-10-2013 9:12:11  "5821"
6  22-10-2013 10:32:11 "33111"

因此数据可以跨越 20 天,我想选择过去 5 天的所有行。请注意,最近 5 天的意思是:表中最近 5 个不同的日期。

Ex : 17-19-20-22-23 在没有 21 和 18 的 tick_info 的情况下。

tick_info 的数量是可变的,因此 20 可能有 100 个 tick_info,而 23 可能有 5 个。

我正在使用 mysql。

更新应该提到我正在使用 mysql 5.5.32

【问题讨论】:

    标签: mysql sql datetime


    【解决方案1】:

    试试这个::

    Select 
    * 
    from 
    'myTable' 
    where 'datetime' >=
          (
               select  
              `datetime` 
              from myTable 
              group by DATE(`datetime`) 
              order by `datetime` desc 4,1
            )
    

    【讨论】:

    • 还有 5 天的向后限制呢?
    • @Antoniossss:这正是我的逻辑,获取第 5 天并获取当天的记录
    • 怎么来的?我只是不明白
    • 啊,好吧,我误解了这个问题。 +1
    • @Lazik:只需将 limit 5,1 更改为 limit 4,1
    【解决方案2】:

    SELECT * FROM yourTable WHERE tick_info>=DATE_SUB(tick_info, INTERVAL 5 DAY) group by tick_info order by tick_info DESC

    【讨论】:

    • 不会给出OP想要的结果
    【解决方案3】:

    请检查我的查询,它是百分之几的工作

    我测试过

    SELECT * FROM yourTable WHERE tick_info>=DATE_SUB(Now(), INTERVAL 5 DAY) group by tick_info order by tick_info DESC
    

    【讨论】:

      猜你喜欢
      • 2014-02-13
      • 1970-01-01
      • 2011-04-06
      • 2010-11-03
      • 2021-07-21
      • 1970-01-01
      • 2014-06-17
      • 2011-09-09
      • 1970-01-01
      相关资源
      最近更新 更多