Как перейти между набором дат и времени - PullRequest
0 голосов
/ 06 июня 2019

У меня есть набор данных, где один столбец - это дата и время.Меня попросили все данные в таблице, между двумя диапазонами дат и в пределах этих дат, только с определенной шкалой времени.Например, у меня были данные в период с 1 февраля по 10 февраля 2009 года и с 12:00 до 07:00.(Мои диапазоны действительных дат превышают количество месяцев, я просто использую эти даты в качестве примера)

Я могу привести дату и время к двум различным столбцам, чтобы разделить их, как показано ниже:

select

name
,dateandtimetest
,cast(dateandtimetest as date) as JustDate
,cast(dateandtimetest as time) as JustTime
INTO #Test01
from [dbo].[TestTable]

Я поместил это в тестовую таблицу, чтобы посмотреть, смогу ли я использовать функцию between в столбце JustTime, потому что я знаю, что я могу сделать between в даты без проблем.Моя идея состояла в том, чтобы сделать их в двух отдельных таблицах и выполнить inner join, чтобы получить нужные мне результаты

from #Test01
WHERE justtime between '00:00' and '05:00'

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

Тестовая таблица, которую я использую, чтобы попытаться получить правильный код, показана ниже:

|Name       | DateAndTimeTest   
-----------------------------------------| 
|Lauren     | 2019-02-01 04:14:00   |
|Paul       | 2019-02-02 08:20:00   |
|Bill       | 2019-02-03 12:00:00   |
|Graham     | 2019-02-05 16:15:00   |
|Amy        | 2019-02-06 02:43:00   |
|Jordan     | 2019-02-06 03:00:00   |
|Sid        | 2019-02-07 15:45:00   |
|Wes        | 2019-02-18 01:11:00   |
|Adam       | 2019-02-11 11:11:00   |
|Rhodesy    | 2019-02-11 15:16:00   |

У меня естьТеперь попробовал и получил данные, чтобы показать мне информацию между временами в одну дату, используя приведенный ниже код, но теперь мне нужно будет запустить этот фрагмент кода для каждой даты в течение 3-месячного периода

select * 

from dbo.TestTable

where DateAndTimeTest between '2019-02-11 00:00:00' and '2019-02-11 08:30:00'

1 Ответ

1 голос
/ 06 июня 2019

Вы можете использовать SQL аналогично следующему:

select *
from dbo.TestTable
where (CAST(DateAndTimeTest as date) between '2019-02-11' AND '2019-02-11') AND 
      (CAST(DateAndTimeTest as time) between '00:00:00' and '08:30:00')

Выше запроса вернет все записи, где значение DateAndTimeTest в диапазоне дат с 2019-02-11 по 2019-02-11 и со временем между 12:00 и 8:00: 30 AM.

...