Member 12926744 Ответов: 2

Как получить все времена больше, чем определенное время в SQL


Всем привет,

У меня есть таблица с полем ie starttimes . Что мне нужно , так это то, что мне нужно получить все начальные времена, которые больше, чем определенное время . Я сохранил время в типе varchar.

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

Например ,
StartTimes
1:00 AM    
2:00 AM  
3:00 AM      
4:00 AM  
7:00 AM 
1:00 PM
2:00 PM
3:00 PM

и так далее.
Если я выберу 7:00 утра , мне нужно получить все времена, превышающие 7:00 утра, то есть все времена в поле времени в течение 12 часов, то есть с 7:00 утра до 11:59 вечера.Как это сделать.
Любая помощь будет очень признательна .заранее спасибо.

CHill60

Простой ответ-Не используйте тип Varchar для времени ... использовать, РП, Time

Maciej Los

Мой виртуальный 5!

2 Ответов

Рейтинг:
2

CHill60

Использование этого примера данных

create table #badway
(
	id integer identity(1,1),
	mytime varchar(8)
)
insert into #badway (mytime) values
('1:00 AM'),
('2:00 AM'),  
('3:00 AM'),      
('4:00 AM'),  
('7:00 AM'), 
('1:00 PM'),
('2:00 PM'),
('3:00 PM')
Тогда этот запрос соответствует вашим критериям
select id, convert(time, mytime) from #badway
where convert(time, mytime) between '07:00:00' and '23:59:00'
Обратите внимание на использование 24-часовых часов.

Как я уже сказал в своем комментарии, вы должны использовать time типы столбцов для хранения времени, а не varchar, тогда не было бы никакой необходимости в convert


Maciej Los

А настоящий - 5!

Рейтинг:
1

Krunal Rohit

Воспользуйся Функция SQL Server DATEPART() [^].

SELECT * FROM [your table] WHERE DATEPART(hh, [your date field]) = 7 --7 AM

КР.


CHill60

Вы были ближе с v1 этого решения. Ты на самом деле имеешь в виду

SELECT * FROM [your table] WHERE DATEPART(hh, [your date field]) >= 7