2014-12-22 5 views
12

Привет, я загружаю таблицу. Данные из sql-сервера в mysql с использованием pentaho при загрузке данных мне нужно получить только последние 7 дней данных с SQL-сервера таблица для MySQL в SQL Server createddate типа данных столбца как DateTime И в MySQL created_on колонке типа данных является временной меткойКак получить последние данные за 7 дней с текущего datetime до 7 дней в sql-сервере

Здесь я использовал ниже запрос, но я получаю только 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 
+0

Вы уверены, что у вас есть 7 дней данных? – Raj

+0

Да, я уверен, что у меня есть данные за 7 дней – SRI

+0

Должны быть данные за каждый день за последние 7 дней – Raj

ответ

3
select id,  
NewsHeadline as news_headline,  
NewsText as news_text,  
state,  
CreatedDate as created_on  
from News  
WHERE CreatedDate>=DATEADD(DAY,-7,GETDATE()) 
+0

Также убедитесь, что у вас есть данные за 7 дней в таблице. Новости –

+0

У меня есть данные за период с 2010 по 2014 год, декабрь 19 – SRI

11

Try что-то вроде:

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

Другой способ сделать это, чтобы получить последние 7 дней, включая текущую дату: '[остальной запрос] ... WHERE CreatedDate BETWEEN (SELECT CAST (DATEADD (день, -6, GETDATE()) AS DATE)) AND (SELECT CAST (GETDATE() AS DATE)) ' – seanvalencourt

5

Я не думаю, что у вас есть данные для каждого дня в течение последних семи дней. Дни, для которых нет данных, явно не появятся.

Попробуйте и проверить, что у вас есть данные за каждый день за последние 7 дней

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

EDIT - скопированный из комментария

я быть_наст разл данных девятнадцатых -1 строк, 18 - 2 строки, 17 -3 строки, 16-й -3 строки 15 -3 строки, 12-й -2 строки, 11-й -4 строки, девятые -1 строк, восьмая -1 строки

у вас нет данных на все дни. Это ваша проблема, а не запрос. Если вы выполните запрос сегодня - 22-й - вы получите данные только для 19-го, 18-го, 17-го, 16-го и 15-го. У вас нет данных для 20, 21 и 22-го.

EDIT - Для того, чтобы получить данные за последние 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) 
+0

У меня есть данные за 19-й строкой, 18-й -2 строки, 17-й -3 строки, 16-й -3 строки, 15-й -3 строки, 12-й -2 строки, 11-й -4 строки, 9-я -1 строка, 8-я строка 1 – SRI

+0

См. Edit в моем ответе.У вас нет данных за все дни – Raj

+0

В этой ситуации, оставив 14-й и 13-й данные, если я хочу получить 12-е, 11-е, 9-е, 8-е данные, как я могу это сделать, помогите мне – SRI

0

Если вы хотите сделать это с помощью Pentaho DI, вы можете использовать «Модифицированный JavaScript» Шаг и написать ниже функции:

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

Проверьте изображение ниже: [Если предположить, что текущая дата: 22 декабря 2014]

enter image description here

Надеется, что это помогает :)

+0

Thanks Rishu для вышеуказанного скрипта – SRI

+0

welcome @SRI .. :) – Rishu

Смежные вопросы