Модераторы: Akella

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с датами в Firebird, с частями даты 
V
    Опции темы
SlipKnot
Дата 6.11.2008, 05:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 28.5.2008

Репутация: -1
Всего: -1



Цитата(Бонифаций @  25.10.2008,  02:17 Найти цитируемый пост)
1:
    
  select * from client where extract(month from Birth)*100+extract(day from Birth) between 816 and 907


еще один вопросик.
Можно ли эту таблицу отсортировать по дате. т.е по месяцу и дню? Год чтоб не брался в счет.

Это сообщение отредактировал(а) SlipKnot - 6.11.2008, 05:08
PM   Вверх
Deniz
Дата 6.11.2008, 06:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(SlipKnot @  6.11.2008,  08:08 Найти цитируемый пост)
Можно ли эту таблицу отсортировать по дате. т.е по месяцу и дню?
а что мешает попробовать?
Код
... order by extract(month from Birth)*100+extract(day from Birth)



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
SlipKnot
Дата 6.11.2008, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 28.5.2008

Репутация: -1
Всего: -1



Цитата(Deniz @  6.11.2008,  06:09 Найти цитируемый пост)
а что мешает попробовать?

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 4, char -1.
order.
вот что
PM   Вверх
Akella
Дата 6.11.2008, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



в order by можно использовать номера полей, например
Код

select большое выражение1, большое выражение2 from table order by 1

или
Код

select большое выражение1, большое выражение2 from table order by 2

или
Код

select большое выражение1, большое выражение2 from table order by 1, 2


Добавлено через 3 минуты и 54 секунды
т.е. тебе нужно не
Код

select *

а составить список полей

Добавлено через 8 минут и 46 секунд
ну и соответственно в списке полей будет и
Код

extract(month from Birth)*100+extract(day from Birth)


Это сообщение отредактировал(а) Akella - 6.11.2008, 08:55
PM MAIL   Вверх
Deniz
Дата 6.11.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(SlipKnot @  6.11.2008,  10:01 Найти цитируемый пост)
вот что
не видя запроса, трудно сказать где ошибка.
FireBird версии 1.5 уже умеет делать order by exctract(...)

Добавлено @ 10:20
У меня на тестовой БД запрос 
Код
... extract(month from t1.dt)*100 + extract(day from t1.dt)
нормально отработал. FB1.5

Это сообщение отредактировал(а) Deniz - 6.11.2008, 10:22


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
SlipKnot
Дата 8.11.2008, 07:08 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 28.5.2008

Репутация: -1
Всего: -1



Цитата(Deniz @  6.11.2008,  10:17 Найти цитируемый пост)
не видя запроса, трудно сказать где ошибка.

Код

SELECT *
FROM CLIENT
WHERE
order by (EXTRACT(MONTH FROM CLIENT."Birth")*100+EXTRACT(DAY FROM CLIENT."Birth"))
BETWEEN :par1 AND :par2

как ты и советывал.

Цитата(Akella @  6.11.2008,  08:54 Найти цитируемый пост)
ну и соответственно в списке полей будет и
Выделить всёкод SQL
1:
    
extract(month from Birth)*100+extract(day from Birth)

ты хоть понял что сказал??
PM   Вверх
Akella
Дата 8.11.2008, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



я то понял, что сказал, а тебе хоть немного нужно подучить sql
я правильно всё сказал: вместо звёздочки, будет список полей, а вместе со списком полей и выражение, хотя, я подозреваю, что его можно не показывать в списке полей, а просто сортировать по нему
PM MAIL   Вверх
Deniz
Дата 8.11.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



SlipKnot, неправильно сформирован запрос
Нужно так:
Код
SELECT *
FROM CLIENT
WHERE (EXTRACT(MONTH FROM CLIENT."Birth")*100+EXTRACT(DAY FROM CLIENT."Birth")) BETWEEN :par1 AND :par2
ORDER BY (EXTRACT(MONTH FROM CLIENT."Birth")*100+EXTRACT(DAY FROM CLIENT."Birth"))



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.