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

Вниз

Вопрос по датам.   Найти похожие ветки 

 
asta ©   (2004-05-28 11:07) [0]

Уважаемые мастера, подскажите пожалуйста. У меня в Query есть поле "Дни рождения", нужно чтобы сортировка проиводилась сначала по месяцу, затем по дню. И еще, - текущий день, т.е. все, кто родился в этот день должны быть в начале. За ранее благодарю!


 
Соловьев ©   (2004-05-28 11:09) [1]

СУБД?


 
Sandman25+1   (2004-05-28 11:11) [2]

select 1, month(mydate), day(mydate), *
 from mytable
 where month(mydate) <> month(today)
   or day(mydate) <> day(today)
union all
select 0, month(mydate), day(mydate), *
 from mytable
 where month(mydate) = month(today)
   and day(mydate) = day(today)
 order by 1, 2, 3


 
Sandman25+1   (2004-05-28 11:12) [3]

Хотя лучше обойтись без union, добавив case


 
DenK_vrtz ©   (2004-05-28 11:15) [4]

>т.е. все, кто родился в этот день должны быть в начале

может их лучше цветом другим выделить? :)


 
Sandman25+1   (2004-05-28 11:19) [5]

[4] DenK_vrtz ©   (28.05.04 11:15)

Или locate сделать. Возможно, по кнопке.


 
Соловьев ©   (2004-05-28 11:20) [6]

Блин, телепаты:) И я хочу. Научите! :)))


 
Sandman25+1   (2004-05-28 11:23) [7]

[6] Соловьев ©   (28.05.04 11:20)

От СУБД зависит только способ получить месяц и день. Сам алгоритм (=логика) запроса от СУБД не зависит :)


 
asta ©   (2004-05-28 14:31) [8]

[6]
Прошу прощения, - Интернет у меня отключился. Да СУБД, цветом я знаю как выделить, мне нужно чтобы были на первом месте.


 
asta ©   (2004-05-28 14:34) [9]

[3]Sandman25+1   (28.05.04 11:11)
Я только вошел в сеть еще не пробовал, но спасибо.


 
Fay ©   (2004-05-28 14:40) [10]

- СУБД?
- Да, СУБД.....

8)


 
asta ©   (2004-05-28 14:40) [11]

[4] DenK_vrtz © (28.05.04 11:15)
цветом я знаю как выделить, мне нужно чтобы были на первом месте.


 
asta ©   (2004-05-28 14:53) [12]

[2] Sandman25+1 (28.05.04 11:11)
У меня первоначально так:
select a.tn, fam, im, ot,dotar, b.dptname
from bid a, bdp b
where a.ceh=b.ceh and pruv=0
order by den, fam
где dotar - поле с датой рождения. Не знаю как Ваш запрос применить здесь.


 
Sandman25+1   (2004-05-28 15:06) [13]

select 1, extract (month from dotar),
         extract (day from dotar),
 a.tn, fam, im, ot, dotar, b.dptname
from bid a, bdp b
where a.ceh=b.ceh and pruv=0 and
(extract (month from dotar) <> :m1
  or extract (day from dotar) <> :d1)
union all
select 0, extract (month from dotar),
         extract (day from dotar),
 a.tn, fam, im, ot, dotar, b.dptname
from bid a, bdp b
where a.ceh=b.ceh and pruv=0 and
extract (month from dotar) = :m2
  and extract (day from dotar) = :d2
order by 1, 2, 3


 
asta ©   (2004-05-28 15:16) [14]

[13] Sandman25+1 (28.05.04 15:06)

Выдало такую ошибку:
Query1:Field "m1"is of an unknown type.


 
Sandman25+1   (2004-05-28 15:23) [15]

[14] asta ©   (28.05.04 15:16)

Опишите параметры design-time (ptInput, ftInteger).
А в run-time значения им присвойте...


 
DenK_vrtz ©   (2004-05-28 15:29) [16]

>asta ©

а еще купить(скачать, попросить у кого-нить) литературу. Чаще смотреть справки и читать хелпы!
А еще уроки английского языка не надо было прогуливать :)


 
sniknik ©   (2004-05-28 15:36) [17]

> мне нужно чтобы были на первом месте.
сделай сортировку по выражению "абсолютное значение(текущая дата - день рождения)", у обоих дат в выражении еще надо год обрезать.
получиш сортировку какую хотел (с неточностью с рождениями 29 февраля)

это в общем, точнее (в коде) не могу, не знаю такой базы "Да, СУБД". :(


 
asta ©   (2004-05-28 15:38) [18]

[15] Sandman25+1 (28.05.04 15:23)
Извините, но я не знаю где это описать, я только начинаю в Delphi...


 
Sandman25+1   (2004-05-28 15:44) [19]

[18] asta ©   (28.05.04 15:38)

Выбираете Ваш TQuery в инспекторе, нажимаете мышкой на Params. Там должны быть 4 ... штучки. Выбираете их (все сразу или по очереди) и указываете: ParamType = ptInput, DataType = ftInteger (или ftSmallint).

В run-time:
Decode(Date, Y, M, D);
Query1.ParamByName("m1").AsInteger := M;
Query1.ParamByName("m2").AsInteger := M;
Query1.ParamByName("d1").AsInteger := D;
Query1.ParamByName("d2").AsInteger := D;

PS. Дальше без меня, уж извините. Вам очень нужно книжки почитать.


 
asta ©   (2004-05-28 16:03) [20]

[16] DenK_vrtz © (28.05.04 15:29)
Спасибо за такие "НУЖНЫЕ СОВЕТЫ", но если все знать и иметь, я бы не обращался сюда за помощью. А на счет английского, в свое время (по моему первому образованию) он (язык) был не так нужен. А сечас да, но это для меня второе высшее образование и уже многое упущено.


 
asta ©   (2004-05-28 16:06) [21]

[19] Sandman25+1 (28.05.04 15:44)
Огромное спасибо!!!



Страницы: 1 вся ветка

Текущий архив: 2004.06.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.027 c
4-1084547937
TNewb
2004-05-14 19:18
2004.06.20
Вопрос по ShellExecute


14-1086255952
Отшельник
2004-06-03 13:45
2004.06.20
Увеличить громкость в avi файле


1-1086667253
Глеб
2004-06-08 08:00
2004.06.20
Ошибка Access Violation


14-1086142553
Думкин
2004-06-02 06:15
2004.06.20
С днем рождения! 2 июня


14-1084105414
RealRascal
2004-05-09 16:23
2004.06.20
Баги с пиктограммками в XP