SQL Server сортировка по времени плюс один час - PullRequest
1 голос
/ 28 апреля 2011

У меня есть база данных событий, каждое с полем Time, которое должно быть отсортировано в порядке возрастания с указанного времени.«День» этих событий начинается в 23:00 (события происходят 24 часа в сутки с 23:00 до 22:59).

Можно ли отсортировать мои события так, чтобы результаты начинались с11:00 PM, 23:01 PM, ..., 23:59 события перед продолжением с 12:00 AM события?Если бы примеры могли быть предоставлены как на SQL, так и на LINQ to SQL, это было бы здорово.

Редактировать: Я должен объяснить название моего вопроса.Моя оригинальная идея состояла в том, чтобы просто добавить час к каждому времени при сортировке , но при этом возвращаемое значение должно быть исходным временем.Это привело бы к тому, что все события 11:00 вечера и т. Д. Теперь будут событиями 12:00 утра и т. Д., А все остальное будет перенесено на час вперед (последние события дня в 22:59 теперь будут происходить в 23:59 для сортировки).Это возможно?

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Для данного набора времени сортировка в порядке возрастания даст тот же результат, что и сортировка (время + 1 час) в порядке возрастания. Порядок набора значений не изменяется при добавлении постоянного значения к каждому (по крайней мере, в этом и других простых случаях).

Вам нужно дополнительно сгруппировать по компоненту даты или выбрать по дате? Я чувствую, что, возможно, ваша проблема в том, как группировать или выбирать (время + 1 час), а не сортировать.

0 голосов
/ 28 апреля 2011

Не уверен, что это самый эффективный способ, но я думаю, что это то, что вы просите.

declare @theDateYouAreInterestedIn smalldatetime
-- this gets today's date and subtracts an hour giving you 11:00pm yesterday
-- if you want it some other date just sub out the Cast(GetDate() as date) for the
-- desired date
set @theDateYouAreInterestedIn = Dateadd(hour, -1,Cast(Cast(GetDate() as date) as smalldatetime))
select *
from yourTable
where yourDateTimeField > @theDateYouAreInterestedIn 
and yourDateTimeField < Dateadd(day, 1,@theDateYouAreInterestedIn)
order by yourDateTimeField
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...