Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Вниз

Сортировка в FireBird 1.5   Найти похожие ветки 

 
DelphiN! ©   (2008-02-18 12:24) [0]

Есть запрос :


SELECT distinct(EXTRACT(DAY FROM Time_)||"."||EXTRACT(MONTH FROM Time_)||"."||EXTRACT(YEAR FROM Time_)),SUM(SUMM_)
FROM CaseBase WHERE (TIME_ > "13.08.2007")and(TIME_ < "14.09.2007")
GROUP BY 1
ORDER BY 1


Данные должны сортироваться по дате, однако сортировка происходит неправильно.
Как сделать даты в этом запросе сортируемые при помощи ORDER BY или иными способами?


 
sniknik ©   (2008-02-18 12:35) [1]

не работать с датами в строковом представлении, а работать с датами... ну или если именно в этом запросе то хотябы год с днем местами поменять.


 
atruhin ©   (2008-02-18 15:07) [2]

А вначале объясни, чего ты хочешь добиться таким вопросом? Что за изврат?


 
DelphiN!   (2008-02-18 15:54) [3]


> sniknik ©   (18.02.08 12:35) [1]
>
> ну или если именно в этом запросе то хотябы
> год с днем местами поменять.
>


На моем компьютере установлен формат даты dd.MM.yyyy

В строке distinct(EXTRACT(DAY FROM Time_)||"."||EXTRACT(MONTH FROM Time_)||"."||EXTRACT(YEAR FROM Time_)) очередность дня месяца и года указана такая-же как и в формате даты на компьютере
DAY - день
MONTH - месяц
YEAR - год

Если не так, то как иначе извлечь из строки dd.MM.yyyy hh:nn:ss строку формата dd.MM.yyyy?


 
Правильный_Вася   (2008-02-18 15:58) [4]

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


 
atruhin ©   (2008-02-18 16:55) [5]

> Если не так, то как иначе извлечь из строки dd.MM.yyyy hh:
> nn:ss строку формата dd.MM.yyyy?

Зачем? Цель?
Вообще cast(Time_ as DATE), если база в 3 диалекте.


 
Johnmen ©   (2008-02-18 17:46) [6]

Боже мой! Как все запущено!
И что характерно, автором пишется запрос, в котором он вообще ничего не понимает. Ни функции, ни сортировки....

>DelphiN! ©

Короче. Изучаешь букварь, потом приходишь с вопросами.


 
DelphiN! ©   (2008-02-19 13:33) [7]


> atruhin ©   (18.02.08 16:55) [5]


А в 1ом диалекте?


> Johnmen ©   (18.02.08 17:46) [6]


Если бы я его не понимал, то не написал бы. Запрос выводит верные данные, не хватает только сортировки


 
Johnmen ©   (2008-02-19 13:39) [8]


> DelphiN! ©   (19.02.08 13:33) [7]
> Если бы я его не понимал, то не написал бы.

Значит ты его списал.
А то, что ты ничего не понимаешь в списанном, однозначно подтверждает [0] и [3].


 
DelphiN!   (2008-02-19 13:44) [9]


> Johnmen ©   (19.02.08 13:39) [8]


Запрос выводит верные данные, в конкретном запросе я все понимаю, не понимаю только то, как сделать такой же по результативности запрос, только с сортировкой, поэтому и пишу здесь


 
Правильный_Вася   (2008-02-19 14:02) [10]


> DelphiN!   (19.02.08 13:44) [9]

зубочисткой мышь тоже можно убить


 
Виталий Панасенко(дом)   (2008-02-19 23:47) [11]


> DelphiN!   (19.02.08 13:44) [9]
>
>
> > Johnmen ©   (19.02.08 13:39) [8]
>
>
> Запрос выводит верные данные, в конкретном запросе я все
> понимаю, не понимаю только то, как сделать такой же по результативности
> запрос, только с сортировкой, поэтому и пишу здесь

Потому что строка вида "01.01.2008" , так скажем, МЕНЬШЕ чем строка вида "02.01.2007". Пора бы действительно, букварь почитать. Хотя бы о сравнении строк. а вот такие строки будут сортироваться правильно:
"2007.01.02"
"2008.01.01"


 
Sirus   (2008-02-20 05:49) [12]

И еще в догонку... если тип Time_ varchar (строковой), то тут WHERE (TIME_ > "13.08.2007")and(TIME_ < "14.09.2007") тоже будут глюки и Firebird зараза не захочет правильно их обрабатывать... А если тип Time_ Date (дата) то distinct(EXTRACT(DAY FROM Time_)||"."||EXTRACT(MONTH FROM Time_)||"."||EXTRACT(YEAR FROM Time_)) нафиг не нужен...


 
DelphiN!   (2008-02-20 08:03) [13]

Спасибо всем, буду переводить базы в 3ий диалект и использовать CAST ...


 
Виталий Панасенко ©   (2008-02-20 09:17) [14]


> DelphiN!   (20.02.08 08:03) [13]
> Спасибо всем, буду переводить базы в 3ий диалект и использовать
> CAST ...

В 3-м диалекте есть тоже тип DATE.. но там только день,месяц, год


 
Johnmen ©   (2008-02-20 10:45) [15]


> Sirus   (20.02.08 05:49) [12]
> ... если тип Time_ varchar (строковой), то тут WHERE (TIME_ > "13.08.2007")and(TIME_ < "14.09.2007")
> тоже будут глюки и Firebird зараза не захочет правильно их обрабатывать...

Что за бред?


 
ПРавильный_ВАся   (2008-02-20 11:52) [16]


> Спасибо всем, буду переводить базы в 3ий диалект и использовать CAST

чем бы дитя не тешилось...
ты вместо того, чтобы думать, схватился за первый попавшийся не требующий думанья пункт
вовсе не обязательно переводить в 3-й диалект, чтоб работать с датой как с датой
в 1-м диалекте тип DATE включает в себя дату и время, что для тебя вполне достаточно для сортировки
а на клиенте можно просто у TDateTimeField поставить формат отображения без времени


 
Sirus   (2008-02-20 13:28) [17]


> Johnmen ©   (20.02.08 10:45) [15]
> Что за бред?

Это не бред :) Я имею ввиду что если дата хранится в строковом типе то условие (TIME_ > "13.08.2007")and(TIME_ < "14.09.2007") будет обрабатываться неправильно... то есть "20.08.2007" сюда не попадет, так как больше "14.09.2007"


 
Johnmen ©   (2008-02-20 15:00) [18]


> Sirus   (20.02.08 13:28) [17]
> Я имею ввиду ... условие ... будет обрабатываться неправильно...

Абсолютно правильно. В соответствии с типом.


 
Prohodil Mimo ©   (2008-02-25 14:18) [19]

DelphiN! ©   (18.02.08 12:24)
SELECT distinct(EXTRACT(DAY FROM Time_)||"."||EXTRACT(MONTH FROM Time_)||"."||EXTRACT(YEAR FROM Time_)),SUM(SUMM_)
FROM CaseBase WHERE (TIME_ > "13.08.2007")and(TIME_ < "14.09.2007")
GROUP BY 1
ORDER BY Time_


должно прокатить.

Но
EXTRACT(DAY FROM Time_)||"."||EXTRACT(MONTH FROM Time_)||"."||EXTRACT(YEAR FROM Time_)
это изврат. Ставь на клиенте в датасете формат dd.mm.yyyy и не парься.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1214548406
@!!ex
2008-06-27 10:33
2008.08.10
Быстрое инвертирование матрицы 4х4


15-1214425672
Пробегал2....
2008-06-26 00:27
2008.08.10
А есть тут народ, кто разбирается в чертежах?


6-1191841928
Elen
2007-10-08 15:12
2008.08.10
Закрыть подключение через NetFileClose


15-1213947164
destructor
2008-06-20 11:32
2008.08.10
ICQ system. Почему здесь еще молчат?


15-1213990535
wl
2008-06-20 23:35
2008.08.10
Аниме?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский