#sql #sql-server
#sql #sql-сервер
Вопрос:
Я пытаюсь отфильтровать таблицу между 4 часами дня предыдущего дня и 4 часами утра текущего дня, но не знаю, как это сделать.
Что-то вроде:
WHERE dateColumn gt;= DATEADD(DAY, -1, GETDATE()) AND dateColumn lt;= GETDATE() AND DATEPART(hh, dateColumn) gt;= 16 AND DATEPART(hh, dateColum) lt;= 4
Я понимаю, что вторая строка в заявлении явно неверна и не вернет никаких результатов, но это должно дать представление о том, что я пытаюсь сделать. Мы ценим любую помощь!
Комментарии:
1. Каков тип вашей колонки дат?
dateadd(hour, 16, cast(cast(DATEADD(DAY, -1, GETDATE()) as date) as datetime2))
2. Вы можете попробовать что-то подобное
SELECT CONVERT(SMALLDATETIME, DATEADD(d,-1,CONVERT(DATE, CURRENT_TIMESTAMP))) '16:00'
и без даты.
Ответ №1:
Есть различные способы, которыми вы могли бы это сделать, это позволяет получить дату и время в 1600 вчера и 1600 сегодня.
WHERE dataColumn gt;= dateadd(hour, -8, convert(datetime, convert(date, getdate()))) AND dateColumn lt;= dateadd(hour, 16, convert(datetime, convert(date, getdate())));