如何在sql server中从当前日期时间到过去7天获取最近7天的数据

SRI*_*SRI 27 sql sql-server pentaho sql-server-2008-r2 pentaho-cde

嗨我在加载数据时使用pentaho将数据从sql server加载到mysql我只需要从sql server获取最近7天的数据一个表到mysql在sql server createddate列数据类型就像datetime AND在mysql created_on column datatype is时间戳

这里我使用下面的查询,但我只得到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
Run Code Online (Sandbox Code Playgroud)

SMA*_*SMA 25

尝试类似的东西:

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

  • 另一种获取最近 7 天(包括当前日期)的方法: `[查询的其余部分]... WHERE CreatedDate BETWEEN (SELECT CAST(DATEADD(day,-6, GETDATE()) AS DATE)) AND (选择演员表(GETDATE()作为日期))` (2认同)

小智 7

select id,    
NewsHeadline as news_headline,    
NewsText as news_text,    
state,    
CreatedDate as created_on    
from News    
WHERE CreatedDate>=DATEADD(DAY,-7,GETDATE())
Run Code Online (Sandbox Code Playgroud)


Raj*_*Raj 6

我认为过去七天你每天都没有数据.没有数据的天数显然不会出现.

试试这个并确认您在过去7天内每天都有数据

SELECT DISTINCT CreatedDate
FROM News 
WHERE CreatedDate >= DATEADD(day,-7, GETDATE())
ORDER BY CreatedDate
Run Code Online (Sandbox Code Playgroud)

编辑 - 从您的评论中复制

我有dec第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)
Run Code Online (Sandbox Code Playgroud)


小智 6

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);
Run Code Online (Sandbox Code Playgroud)

我希望它会帮助你