Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Округление даты-время в дату в SQL [FireBird-a 1.5]


Страницы:   1 2

DelphiN! ©   (2007-06-26 11:36:00) 

Есть таблица со значениями :


Time_                                   SUMM_
01.01.2006 01:08:54               100  
01.01.2006 02:07:43               200  
02.01.2006 01:05:18               800
02.01.2006 03:00:16               400
03.01.2006 04:02:27               1200


Необходимо вывести результат запроса :


01.01.2006        300
02.01.2006        1200
03.01.2006        1200


Как написать подобный SQL запрос?


Кщд   (2007-08-17 07:10:00) [1]


> В оракле видел запросы вида :
> select trunc(to_date(sysdate, 'DD-MM-YYYY')) from dual

офф: тут уж либо trunc, либо to_date. иначе - масло масляное)


vlad_   (2007-08-16 18:35:00) [2]


> Кстати, вот так на 1.5-ке пойдётSELECT EXTRACT(DAY FROM
> Time_)||'.'||EXTRACT(MONTH FROM Time_)||'.'||EXTRACT(YEAR
> FROM Time_), SUM(...) FROM TableGROUP BY 1


более красивее
cast(cast(time_ as varchar(11)) as date)


Desdechado   (2007-06-26 15:53:00) [3]

> Ура! Спасибо!
Долго же тебе разжевывать пришлось...


DelphiN!   (2007-06-26 15:17:00) [4]


> Johnmen ©   (26.06.07 15:13) [24]


Ура! Спасибо!


Johnmen   (2007-06-26 15:14:00) [5]


> DelphiN! ©   (26.06.07 15:10) [23]
> А какие решения есть в 3ем диалекте?

[1]


Johnmen   (2007-06-26 15:13:00) [6]

Кстати, вот так на 1.5-ке пойдёт
SELECT EXTRACT(DAY FROM Time_)||'.'||EXTRACT(MONTH FROM Time_)||'.'||EXTRACT(YEAR FROM Time_), SUM(...) FROM Table
GROUP BY 1


DelphiN!   (2007-06-26 15:10:00) [7]


> Johnmen ©   (26.06.07 15:02) [22]


А какие решения есть в 3ем диалекте?


Johnmen   (2007-06-26 15:02:00) [8]


> Разве нельзя преобразовать дату-время к формату даты?

Нельзя ибо нет такого формата в 1 диалекте.

> В оракле видел запросы вида : select trunc(to_date(sysdate,
>  'DD-MM-YYYY')) from dual

Есть аналогичное, но что тебе это даст? Тебе же группировать надо!


DelphiN!   (2007-06-26 14:52:00) [9]


> Johnmen ©   (26.06.07 14:39) [19]


Разве нельзя преобразовать дату-время к формату даты?
Данных много и таблица рабочая ... Неужели нельзя обойтись sql-ем

В оракле видел запросы вида :
select trunc(to_date(sysdate, 'DD-MM-YYYY')) from dual

неужели в FireBird-е нет аналогичного решения?


DelphiN!   (2007-06-26 14:43:00) [10]

IbExpert main menu -> Options -> Environment options -> Grid -> Display formats -> DateTime Fields -> dd.mm.yyyy
приводит к тому что отображаются данные поля без времени, но при двойном щелчке на поле показывается и время, причем вывод уникальных значений select distinct TIME_ дает много одинаковых значений, щелкнув на которые оказывается что в каждом значении даты\времени разное время

Вобщем меняется только визуальное отображение в таблице


Johnmen   (2007-06-26 14:39:00) [11]


> DelphiN! ©   (26.06.07 14:30) [15]

Добавь вычисляемое поле в таблицу, где будет чистая дата, и по нему группируй.


zz 5   (2007-06-26 14:35:00) [12]


> Причем тут формат отображения??


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


Johnmen   (2007-06-26 14:35:00) [13]


> DelphiN! ©   (26.06.07 14:30) [15]
> Причем тут формат отображения??

Как причём? Ты же отображаешь в [15].


Johnmen   (2007-06-26 14:33:00) [14]

и объясни, зачем время указывалось при заполнении поля Time_?


DelphiN!   (2007-06-26 14:30:00) [15]


> Johnmen ©   (26.06.07 14:29) [14]


:'(((

Причем тут формат отображения??

Мне нужно из

Time_                                   SUMM_
01.01.2006 01:08:54               100  
01.01.2006 02:07:43               200  
02.01.2006 01:05:18               800
02.01.2006 03:00:16               400
03.01.2006 04:02:27               1200

получить :

01.01.2006        300
02.01.2006        1200
03.01.2006        1200


Johnmen   (2007-06-26 14:29:00) [16]

А-а-а... Тогда ищи в настройках IBExpert'а формат отображения датавременных полей....


DelphiN!   (2007-06-26 14:25:00) [17]


> Johnmen ©   (26.06.07 14:24) [12]


IBExpert main menu -> Grid -> Save data as ... XLS File


Johnmen   (2007-06-26 14:24:00) [18]


> DelphiN! ©   (26.06.07 14:17) [10]

Какая связь между "SQL editor IBExpert" и "екселем"?


DelphiN!   (2007-06-26 14:22:00) [19]


> Desdechado ©   (26.06.07 13:25) [7]


Ф-ии TRUNC в FireBird нет.
А с помощью ф-ии Extract можно получить по отдельности день недели, месяц, день месяца, год, а дату без времени то как?


DelphiN!   (2007-06-26 14:17:00) [20]

Что значит на что влияет?
Мне нужно дать в екселе руководству отчет по выручке за каждый день, если дата будет в виде 01.01.2006 00:00:00 ничего страшного, главное чтобы сумма бала за период с 01.01.2006 00:00:00 по 01.01.2006 23:59:59 а отображалась в таблице в виде

01.01.2006    300  
или
01.01.2006 00:00:00   300


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо