CHill60
Привет Infobekcons написал:
Я также попытался изменить формат даты столбца на %m %d. но решения нет
Это невозможно. Столбцы дат не имеют "формата".
Смотрите комментарии от @maciej-los - вы должны хранить данные в своей таблице следующим образом
date
Не varchar типы. Вы все еще можете искать по месяцам и годам, если хотите
select id from monthly_tool where MONTH(from_date) >= 12 AND YEAR(from_date) >= 22 and MONTH(to_date) <= 1 AND YEAR(to_date) <= 9
Но это не очень приятно. Лучше было бы преобразовать параметры поиска в даты например
declare @search_from varchar(5) = '12-22'
declare @search_to varchar(5) = '01-18'
declare @date_from date = cast('01-' + @search_from AS date)
declare @date_to date = LASTDAY(cast('01-' + @search_to AS date))
select id from monthly_tool where from_date >= @date_from_date and to_date <= @date_to_date
[Необходимо отметить, что ваши даты "от" находятся после ваших дат "до" в ваших "образцовых данных"]
Если вы настаиваете на неправильном хранении ваших данных, то, по крайней мере, храните символы таким образом, чтобы их можно было легко найти, например
declare @monthly_tool table(id int identity(1,1), from_date varchar(5), to_date varchar(5))
insert into @monthly_tool (from_date, to_date) values
('2112','1901'),
('2001','1802')
declare @search_from varchar(5) = '2212'
declare @search_to varchar(5) = '1801'
select id from @monthly_tool where CAST(from_date as int) >= CAST(@search_from as int) and CAST(to_date as int) <= CAST(@search_to as date)
Но лучший совет, который вы получите от всех нас сегодня, - это хранить ваши данные в соответствующих типах столбцов, а наиболее подходящим типом столбцов для даты является
date
!
Hello Infobekcons
@CHill60 спасибо за ваш ответ, остро этот процесс int не будет работать, потому что я ищу дату мудро, означает, что с 22 декабря ( 22-12 ) по 9 января (01-09) мне нужна та строка, которая имеет эти связанные детали, такие как 22 декабря и 9 января, подходит под мой первый результат строки.
Мне нужен диапазон дат От До До, поэтому я изменил тип даты на %M %D