Подтвердить что ты не робот

Как получить последние 7 дней данных с текущего дня и времени до 7 дней на сервере sql

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

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

Ответ 1

Попробуйте что-то вроде:

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

Ответ 2

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

Ответ 3

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

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

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

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

У меня есть данные за 19-й строкой, 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-го.

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)

Ответ 4

Надеюсь, это поможет,

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

Ответ 5

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

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

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

enter image description here

Надеюсь, это поможет:)

Ответ 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);

Я надеюсь, что это поможет вам