Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.10;
Скачать: CL | DM;

Вниз

Сортировка в 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
1-1196554693
Elec3C
2007-12-02 03:18
2008.08.10
Вопрос по HotKey ям


3-1204112582
Tornado
2008-02-27 14:43
2008.08.10
Сформировать запрос


4-1194466380
Still Swamp
2007-11-07 23:13
2008.08.10
Не могу получить сообщение:


15-1214535783
Slider007
2008-06-27 07:03
2008.08.10
С днем рождения ! 27 июня 2008 пятница


15-1214414776
tesseract
2008-06-25 21:26
2008.08.10
Аврал на серой ветке.