Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сортировка по времени  [new]
Fandorine
Member

Откуда: Владимир
Сообщений: 10
Как выполнить сортировку по времени, чтобы результат запроса выглядел так:
5:00, 6:00, ..., 12:00, 13:00,..., 23:00, 00:00, 01:00.
Сейчас получается только так: 00:00, 01:00, 5:00, 6:00, ..., 12:00, 13:00,..., 23:00.
4 ноя 04, 11:33    [1082929]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
Fandorine
Как выполнить сортировку по времени, чтобы результат запроса выглядел так:
5:00, 6:00, ..., 12:00, 13:00,..., 23:00, 00:00, 01:00.
Сейчас получается только так: 00:00, 01:00, 5:00, 6:00, ..., 12:00, 13:00,..., 23:00.

Хотите,чтобы сутки у вас начинались, когда ВЫ проснулись? в 12:00, а не в 00:00? Или когда у вас "переход" осуществляется?
Моно что-нить типа CASE X<12 THEN 2*X ELSE X END...Вообще не особо понятно чего вы хотите...
4 ноя 04, 11:40    [1082978]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
declare @t table(d datetime, t as convert(varchar, d, 108))

insert @t select '20041010 05:00'
union all select '20041011 00:00'
union all select '20041010 12:00'
union all select '20041010 13:00'
union all select '20041010 06:00'
union all select '20041010 23:00'
union all select '20041011 01:00'

select * from @t

--собственно сортировка
select t from @t order by d
4 ноя 04, 11:42    [1082989]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
Только еще необходимое смещение добавить:
ORDER BY DATEADD(hh,@add,date_field)
4 ноя 04, 11:44    [1082997]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Fandorine
Member

Откуда: Владимир
Сообщений: 10
Berg
Хотите,чтобы сутки у вас начинались, когда ВЫ проснулись? в 12:00, а не в 00:00? Или когда у вас "переход" осуществляется?
Моно что-нить типа CASE X<12 THEN 2*X ELSE X END...Вообще не особо понятно чего вы хотите...


Это надо для отображения программы передач. Обычно сетка вещания начинается с 5и утра.
4 ноя 04, 11:50    [1083041]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Grey_
Guest
а по датам со временем не судьба отсортировать... получится именно то что надо..
4 ноя 04, 11:58    [1083078]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
Fandorine
Berg
Хотите,чтобы сутки у вас начинались, когда ВЫ проснулись? в 12:00, а не в 00:00? Или когда у вас "переход" осуществляется?
Моно что-нить типа CASE X<12 THEN 2*X ELSE X END...Вообще не особо понятно чего вы хотите...


Это надо для отображения программы передач. Обычно сетка вещания начинается с 5и утра.


Действительно непонтно почему по дате не судьба отсортировать.
Если у вас там только время, то
 ORDER BY CASE X<=5 THEN 24+X ELSE X END 
. Какого типа столбец-то у вас?
4 ноя 04, 12:18    [1083170]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Fandorine
Member

Откуда: Владимир
Сообщений: 10
Есть два столбца : TimeAir, DateAir - DateTime.

Сортировать по дате не получится, потому что если период поставить один день, то программы после 12 ночи отсекутся.
4 ноя 04, 15:07    [1083948]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
Давайте-ка напишите DDL таблички, откуда берутся данные, скрипт на создание таблицы и что Вы хотите получить... А то столбцы непонятно какого типа, что там хранится - Бог его знает, а "хочу получить из этого все"...
4 ноя 04, 15:32    [1084038]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Fandorine
Member

Откуда: Владимир
Сообщений: 10
CREATE TABLE [AIR] (
	[ID] [int] IDENTITY (1, 1) NOT NULL ,
	[NAME] [varchar(128)] ,
	[TIMEAIR] [datetime]  ,
	[DATEAIR] [datetime]  ,
         ...

Данные берутся из сетки вещания. Хочу получить : в форме выбирается дата
и выводится программа на текущий день по времени от 5 утра до Х ночи.
4 ноя 04, 15:49    [1084114]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
автор
Данные берутся из сетки вещания. Хочу получить : в форме выбирается дата
и выводится программа на текущий день по времени от 5 утра до Х ночи.

Что значит "Х" ночи? Это текущий день или уже следующий? Если следующий, то до скольки?
Храните как дату и время, пример данных приведите, плз.
4 ноя 04, 16:43    [1084351]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2505
Для этого нужно для этого канала знать время начала вещания.
Создаете еще одно поле и по нему делаете сортировку.
Можно вычисляемое, можно обычное, тогда поддержка его должна быть на триггерах.
Его значение (этого нового поля) равно времени выхода в эфир, если выход в эфир позднее времени начала вещания. А если нет, то прибавляете 1. Т.е. у Вас получится 01:00 завтрашнего дня, но в сегодняшней сетке.
Именно так и делали при работе с сетками программ, правда это было через iif() на Access'e.
На T-SQL это сделаете сами, алгоритм я подсказал.

ЗЫ. А что у Вас за проект?
4 ноя 04, 16:51    [1084372]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по времени  [new]
Fandorine
Member

Откуда: Владимир
Сообщений: 10
Честно говоря, не сильно разбираюсь в T-SQL, но алгоритм понятен. Спасибо.

ЗЫ. Проект - размещение рекламы на тв-каналах.
5 ноя 04, 11:57    [1085958]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить