Код SQL для извлечения данных за предыдущий день с 4 утра до 3:59 утра текущего дня

#sql #sql-server #sql-date-functions

#sql #sql-server #sql-дата-функции

Вопрос:

Я пытаюсь извлечь все данные за предыдущий день, начиная с 4 утра до 3:59 утра по восточному времени текущего дня.

Например: сегодня 11/4/20, поэтому я бы хотел, чтобы все данные были с 23.11.2010 04:00 — 04.11.2010 03:59

Может ли кто-нибудь помочь мне с этим? Я чувствую, что я слишком много думаю об этом и не могу понять!

 SELECT 
      [auth_account_number] as [Employeee ID]
,'Pearl Card Withdraw $' as [Time Off]
      ,tm.updated_date_time as [Date]
      ,[payment_amount] as [Total Time]
  FROM [ig_business].[dbo].[Check_GA_Account_Charge_Detail] cd
  inner join [ig_transaction].[dbo].[Transaction_Master] tm on cd.transaction_data_id=tm.transaction_data_id 

  where tender_dim_id='104'
  and tm.updated_date_time >= convert(datetime, dateadd(day, 1, convert(date, getdate())))   '04:00:00' 
   and tm.updated_date_time < convert(datetime, convert(date, getdate()))   '04:00:00'
  

Комментарии:

1. @DaleK Я обновил свой пост, включив в него то, что я пытаюсь запустить, это помогает?

Ответ №1:

Предполагая, что у вас есть столбец даты / времени, вы можете использовать:

 select t.*
from t
where dt >= convert(datetime, dateadd(day, -1, convert(date, getdate())))   '04:00:00' and
      dt < convert(datetime, convert(date, getdate()))   '04:00:00'
  

Комментарии:

1. Когда я запускаю это, оно появляется пустым, и должны отображаться данные def

2. @LyndseyCupit . , , я только что исправил опечатку. Этого -1 не должно быть 1 .

Ответ №2:

Я смог понять это, я использовал этот код

   and tm.updated_date_time <= dateadd(day, datediff(day, 0, getdate()), 0)   '4:00'
  and tm.updated_date_time > dateadd(day, datediff(day, 0, getdate()-1), 0)   '4:00'