Главная страница
    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.006 c
2-1215418081
IGray
2008-07-07 12:08
2008.08.10
Экспорт ветки реестра в REG-файл без Regedit-a.


15-1214114732
Kostafey
2008-06-22 10:05
2008.08.10
Just for fun: Почему у Microsoft ничего не выйдет с .Net


8-1183726658
Sonic90
2007-07-06 16:57
2008.08.10
Версия MP3 тегов


15-1214480023
No_Dead
2008-06-26 15:33
2008.08.10
Игральный кубик


2-1215687647
max
2008-07-10 15:00
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский