Sanjeev Kumar Ответов: 2

Как выбрать дату в пределах двух дат из функции SQL базы данных


Я выбираю данные в пределах двух дат start_date и End_date,
Start_date и End_date между датами не существуют в базе данных.
как получить дату в течение двух дат.

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

select STATUS,SELECT_DATE from PA_TIME_SCHEDULING_table where 
              SELECT_DATE between '2018/04/17' and '2018/04/19'

2 Ответов

Рейтинг:
1

Wendelius

Если SELECT_DATE хранится в виде даты в PA_TIME_SCHEDULING_table попробуйте явно преобразовать даты начала и окончания в дату. Вы никогда не должны доверять неявному преобразованию, так как оно зависит от настроек базы данных,

Например

select STATUS,SELECT_DATE 
from PA_TIME_SCHEDULING_table where 
SELECT_DATE between convert(date, '2018/04/17', 111) and convert(date, '2018/04/19', 111)


Если SELECT_DATE хранится в виде varchar, то вы могли бы достичь правильного результата, преобразовав его в дату в предложении where, но вместо этого я бы рекомендовал изменить тип данных на date.


Рейтинг:
0

an0ther1

Один из способов достижения этого заключается в следующем;
Примечание: Ниже приводится лишь демонстрация того, как это может быть достигнуто, и ее необходимо будет отредактировать в соответствии с вашими требованиями

DECLARE @dteStart DATETIME
DECLARE @dteEnd DATETIME

SET @dteStart = '20180501'
SET @dteEnd = '20180514'

CREATE TABLE #TempDates
(
	[TheDate] DATETIME
)

WHILE @dteStart < DATEADD(day, 1, @dteEnd)
BEGIN
	INSERT INTO #TempDates([TheDate]) VALUES(@dteStart)
	SET @dteStart = DATEADD(day, 1, @dteStart)
END

SELECT * FROM #TempDates

DROP TABLE #TempDates


с уважением