Работа со временем SQL - PullRequest
       4

Работа со временем SQL

2 голосов
/ 13 декабря 2010

У меня есть два поля (StartTime и EndTime), оба поля varchar (оно было создано до того, как я начал)

Start Time        End time
{t '01:00:00'}  {t '21:30:00'}
{t '01:30:00'}  {t '09:00:00'}
{t '07:00:00'}  {t '11:30:00'}
{t '08:00:00'}  {t '19:00:00'}
{t '07:00:00'}  {t '11:00:00'}

Я создаю запрос только для получения записей, где текущее время находится между временем начала и окончания.

например, если время начала 1:00, а время окончания 9:00. И сейчас время 11 утра, он получит эту запись.

Я не уверен, как это сделать с полями varchar.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 13 декабря 2010

Если бы просто работало, если бы все это было в том же формате и 24-часовом времени.Согласно кодам ASCII ...

{t '08:00:00'} <= {t '11:00:00'} <= {t '19:00:00'} 

Если вы храните hh:mm:ss, а не {t 'hh:mm:ss'}

08:00:00 <= 11:00:00 <= 19:00:00

Нет необходимости в CAST во времени и т. Д., Если вы застряли с устаревшим кодом/data...

Редактировать согласно комментарию

Если вы хотите разыграть, извлеките реальные данные из пуха

CAST(SUBSTRING('{t ''01:00:00''}', 5, 8) AS time)
--OR
CAST('01:00:00' AS time)
0 голосов
/ 13 декабря 2010

Есть еще один способ сделать это, я напишу пример запроса здесь. Надеюсь, это поможет

SELECT * from TableName
WHERE right(CONVERT(datetime,starttime,103),7) = '01:00AM' and
      right(CONVERT(datetime,endtime,103),7) = '09:00PM' and
      right(CONVERT(datetime,getdate(),103),7) = '11:00AM'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...