#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'