【问题标题】:How to get last 7 days data from current datetime to last 7 days in sql server如何在sql server中获取从当前日期时间到最近7天的最后7天数据
【发布时间】:2023-03-27 04:09:01
【问题描述】:

您好,我正在使用 pentaho 将表 A 数据从 sql server 加载到 mysql 加载数据时,我只需要从 sql server A table 获取最近 7 天的数据到 mysql 在 sql server createddate 列数据类型类似于 datetime AND 在 mysql created_on 列数据类型是时间戳

这里我使用了下面的查询,但我只得到了 5 天的数据
请帮我解决这个问题

select id,    
NewsHeadline as news_headline,    
NewsText as news_text,    
state,    
CreatedDate as created_on      
from News    
WHERE CreatedDate BETWEEN GETDATE()-7 AND GETDATE()
order by createddate DESC

【问题讨论】:

  • 你确定你有 7 天的数据吗?
  • 是的,我确定我有 7 天的数据
  • 必须有过去 7 天内每一天的数据
  • 我有 12 月 19 日 -1 行数据,第 18 行 -2 行,第 17 行 -3 行,第 16 行 -3 行,第 15 行 -3 行,第 12 行 -2 行,第 11 行 -4 行,第 9 行 -1行,第 8 -1 行

标签: sql sql-server sql-server-2008-r2 pentaho pentaho-cde


【解决方案1】:

尝试类似:

 SELECT id, NewsHeadline as news_headline, NewsText as news_text, state CreatedDate as created_on
 FROM News 
 WHERE CreatedDate >= DATEADD(day,-7, GETDATE())

【讨论】:

  • 获取最近 7 天的另一种方法,包括当前日期:[rest of query]... WHERE CreatedDate BETWEEN (SELECT CAST(DATEADD(day,-6, GETDATE()) AS DATE)) AND (SELECT CAST(GETDATE() AS DATE))
【解决方案2】:
select id,    
NewsHeadline as news_headline,    
NewsText as news_text,    
state,    
CreatedDate as created_on    
from News    
WHERE CreatedDate>=DATEADD(DAY,-7,GETDATE())

【讨论】:

  • 还要确保表格 News 中有过去 7 天的数据
  • 我有 2010 年到 2014 年 12 月 19 日的过去数据
【解决方案3】:

我认为您没有过去 7 天的每一天的数据。没有数据存在的日子,显然不会显示出来。

试试这个并验证你有过去 7 天每一天的数据

SELECT DISTINCT CreatedDate
FROM News 
WHERE CreatedDate >= DATEADD(day,-7, GETDATE())
ORDER BY CreatedDate

编辑 - 从您的评论中复制

我有 12 月 19 日 -1 行数据,18 日 -2 行,17 日 -3 行,16 日 -3 行,15-3行,12-2行,11-4行,9-1行,8--1行

您没有整天的数据。那是您的问题,而不是查询。如果您今天(22 日)执行查询,您将只能获得 19 日、18 日、17 日、16 日和 15 日的数据。您没有 20 日、21 日和 22 日的数据。

编辑 - 要获取过去 7 天的数据,如果有可用数据,您可以尝试

select id,    
NewsHeadline as news_headline,    
NewsText as news_text,    
state,    
CreatedDate as created_on      
from News    
WHERE CreatedDate IN (SELECT DISTINCT TOP 7 CreatedDate from News
order by createddate DESC)

【讨论】:

  • 我有 12 月 19 日 -1 行数据,第 18 行 -2 行,第 17 行 -3 行,第 16 行 -3 行,第 15 行 -3 行,第 12 行 -2 行,第 11 行 -4 行,第 9 行 -1行,第 8 -1 行
  • 在这种情况下,如果我想获得第 12、11、9、8 条数据,请留下第 14 和第 13 条数据,我该怎么做才能帮助我
  • 谢谢 对于上面的查询,它给出的是最近 7 条记录,而不是最近 7 天的记录
【解决方案4】:

DATEADD 和 GETDATE 函数在 MySQL 数据库中可能不起作用。因此,如果您正在使用 MySQL 数据库,那么以下命令可能会对您有所帮助。

select id, NewsHeadline as news_headline,    
NewsText as news_text,    
state, CreatedDate as created_on    
from News    
WHERE CreatedDate>= DATE_ADD(CURDATE(), INTERVAL -3 DAY);

希望对你有帮助

【讨论】:

    【解决方案5】:

    要提取过去 3 天的数据,而不是当前日期:

    date(timestamp) >= curdate() - 3
    AND date(timestamp) < curdate()
    

    例子:

    SELECT *
    
    FROM user_login
    WHERE age > 18
    AND date(timestamp) >= curdate() - 3
    AND date(timestamp) < curdate()
    
    LIMIT 10
    

    【讨论】:

      【解决方案6】:

      这对我有用!

      SELECT * FROM `users` where `created_at` BETWEEN CURDATE()-7 AND CURDATE()
      

      【讨论】:

        【解决方案7】:

        您可以在 where 子句中使用 DATEADD 函数,例如

        select ...... where Createdate >= DATEADD(day,-7,GETDATE())
        

        【讨论】:

          【解决方案8】:

          如果你想使用 Pentaho DI 来做,你可以使用“Modified JavaScript”步骤并编写如下函数:

          dateAdd(d1, "d", -7);  // d1 is the current date and "d" is the date identifier
          

          查看下图:[假设当前日期为:2014 年 12 月 22 日]

          希望对你有帮助:)

          【讨论】:

            【解决方案9】:

            希望这会有所帮助,

            select id,    
            NewsHeadline as news_headline,    
            NewsText as news_text,    
            state,    
            CreatedDate as created_on      
            from News    
            WHERE CreatedDate >= cast(dateadd(day, -7, GETDATE()) as date)
            and CreatedDate < cast(GETDATE()+1 as date) order by CreatedDate desc
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-09-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-09-14
              • 1970-01-01
              • 2023-02-16
              相关资源
              最近更新 更多