Форум: "Базы";
Текущий архив: 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