Как выбрать данные SQL всего за 20 дней, используя TimeStamp

Как я могу просто использовать данные за предыдущие 20 дней, используя TimeStamp. В приведенном ниже коде я выбираю метку времени выше этой метки времени, которую я хотел выбрать, а затем вставить ее. Но меня не интересуют все данные, которые находятся в базе данных, но мне нужны данные за 20 дней с этой конкретной даты отметки времени. Как я могу этого достичь. То, что я пробовал, приведено ниже.

Мой запрос SQL-сервера выглядит следующим образом:

SELECT [LogID]
      ,[TimeStamp]
      ,[Artikel_Nr]
      ,[Percentage_Nr]
from [Database1].[dbo].[Tabel1]
  where [TimeStamp] > 2018-02-12 06:02:18.77 AND SELECT DATEADD(DAY,-20,GETDATE())

Я не уверен, что приведенная выше строка для выбора последних 20 дней верна. Если нет, пожалуйста, поправьте меня.


person user9630935    schedule 20.08.2018    source источник
comment
[server1].[dbo].[Database1] не имеет смысла. Первый объект — это база данных, второй — схема, а третий — объект в базе данных и схеме (т. е. таблица, представление). Если бы вы использовали именование из 4 частей, то первой частью было бы имя сервера.   -  person Larnu    schedule 20.08.2018
comment
@Larnu: Извините, это [Database1].[dbo].[Tabel1]. Я буду редактировать свой контент. Спасибо, что заметили.   -  person user9630935    schedule 20.08.2018


Ответы (3)


Будет ошибка SELECT DATEADD(DAY,-20,GETDATE()), вы можете использовать DATEADD(DAY,-20,GETDATE()) напрямую.

Если вы хотите предыдущие 20 дней, вы можете попробовать между днем ​​начала и датой окончания.

  1. день начала предыдущие 20 дней DATEADD(DAY,-20,GETDATE())
  2. дата окончания использует только GETDATE() для получения текущей даты и времени.

затем используйте Between

SELECT [LogID]
      ,[TimeStamp]
      ,[Artikel_Nr]
      ,[Percentage_Nr]
from [server1].[dbo].[Database1]
where [TimeStamp]  between DATEADD(DAY,-20,GETDATE()) and GETDATE()
person D-Shih    schedule 20.08.2018

Пытаться

DECLARE @EndDate DateTime = GETDATE(); -- Specify the date you want to end at
DECLARE @StartDate DateTime = DATEADD(DAY, -20, @EndDate);

SELECT [LogID]
  ,[TimeStamp]
  ,[Artikel_Nr]
  ,[Percentage_Nr]
FROM [Table]
WHERE [TimeStamp] > @StartDate AND [TimeStamp] <= @EndDate 
person Kami    schedule 20.08.2018
comment
разве это не должно быть DECLARE @StartDate DateTime = DATEADD(DAY, -20, @ EndDate) ? - person Udit Solanki; 20.08.2018

Попробуйте выполнить запрос ниже: вам не нужно выбирать

SELECT [LogID]
      ,[TimeStamp]
      ,[Artikel_Nr]
      ,[Percentage_Nr]
from [server1].[dbo].[Database1]
  where [TimeStamp] > '2018-02-12 06:02:18.77' AND [TimeStamp]< DATEADD(DAY,-20,GETDATE())
person Fahmi    schedule 20.08.2018