Abdalla Ben Omran Ответов: 3

Как я могу выбрать данные между датами буксировки, которые являются одним и тем же днем в SQL server ?


я хочу найти дату и время fromdate -> todate
если я пишу от даты 03.12.2019 до даты 03.12.2019, это не дает мне никаких результатов, но у меня есть эта дата в моей базе данных .

я просто один, чтобы отобразить одну дату ?!
каким должно быть условие в этом случае ?

Что я уже пробовал:

DECLARE @fromdate datetime = Convert (datetime, '27.11.19', 4), @todate datetime= Convert (datetime, '27.11.19', 4)

phil.o

Вы уже получили ответ на этот вопрос здесь[^]. Вы даже приняли решение.
Так почему же вы не можете применить сегодня то, чему научились вчера?

[no name]

Привет , это еще один вопрос или еще одна проблема . здесь я хотел получить данные с того же дня или той же даты

3 Ответов

Рейтинг:
22

OriginalGriff

Либо добавьте 23:59:59.9999 в свой ToDate, либо

SELECT * FROM MyTable WHERE EnterDate BETWEEN @fromdate AND DATEADD(dd, 1, @todate)
Причина в том, что - конечно же, в моей БД - столбец EnterDate является меткой времени, что означает, что он включает в себя временную часть. Поскольку вы не предоставляете временную часть своим значениям from или to, они по умолчанию равны полуночи, поэтому никакие "реальные" метки времени им не соответствуют.
Добавление одного дня к значению to устанавливает это значение до полуночи следующего дня, так что весь 2019-03-12 совпадает.


[no name]

как всегда ты самый лучший

Рейтинг:
2

MadMyche

Если это будет широко использоваться, вы можете создать Определяемая Пользователем Функция чтобы позаботиться об этом.

В этом примере будет возвращена последняя секунда введенной даты

CREATE FUNCTION [dbo].[EndOfDay] (
  @DateText  Char(8)
)
RETURNS	DateTime
AS
BEGIN
  RETURN DateAdd(Ss, 86399, Convert (DateTime, @DateText, 4))
END
GO
Затем вы можете вызвать эту функцию с помощью этого автономного запроса
SELECT dbo.EndOfDay('27.11.19')
И в запросе который вы предоставили вы можете использовать его в своем заявлении декларации
DECLARE @fromdate datetime = Convert (datetime, '27.11.19', 4)
,       @todate   datetime = dbo.EndOfDay('27.11.19')


Рейтинг:
0

Pascal-78

Попробуйте включить время в ваши 2 даты : 00:00:00 и 23:59:59