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

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

Сравнение дат в SQL


3APA3A ©   (2003-12-23 17:04:00) 

У меня таблица Paradox такого примерно формата
day_ int, month_ int, year_ int,(дальше другие данные)...
И пользователь выбирает период времени, который в программе представляется как day1,month1,year1 и day2,month2,year2 - все integer, day1,month1,year1 - это начало периода, day2,month2,year2 - соответственно конец этого периода. Как SQL-запросом вебрать только те записи, которые лежат в этом периоде?

я раньше писал просто (day_>=day1 and month_>=month1 and year_>=year1 and day_<=day2 and month_<=month2 and year_<=year2), пока не заметил, что это не правильно... Помогите пожалуйста...


Sandman25   (2003-12-23 18:10:00) [1]

[17] Donna (23.12.03 18:06)

Это неважно. Разница между годами все равно только 1 год :)

31 декабря 2002 года -> 31+32*12+2002*10=20435
1 января 2003 года -> 1+32*1+2003*10=20063


Donna   (2003-12-23 18:06:00) [2]

Я так посчитала, что и так год >=2000 :)


Sandman25   (2003-12-23 18:02:00) [3]

[15] Johnmen © (23.12.03 17:36)

Это нормально. Сам такой же :)


Johnmen   (2003-12-23 17:36:00) [4]

>Sandman25 © (23.12.03 17:30)

Да, верно. Я не прав, поторопился...


Sandman25   (2003-12-23 17:30:00) [5]

[13] Johnmen © (23.12.03 17:27)

Зависит от A1.
Надо, чтоб
12*A1+31 < A2+A1+1

Если A1=100, то имеем
1231<A2+101
Откуда A2>1130 :)


Johnmen   (2003-12-23 17:27:00) [6]

>Sandman25 © (23.12.03 17:26)

A2 достаточно > 366
:)


Sandman25   (2003-12-23 17:26:00) [7]

[9] Donna (23.12.03 17:21)

На A1=32 и A2=10 нельзя. Надо чтобы:
1) 31 < A1
2) 12 * A1 + 31 < A2


Johnmen   (2003-12-23 17:24:00) [8]

>Donna (23.12.03 17:21)

на 32 и 10 нельзя :)


3APA3A   (2003-12-23 17:24:00) [9]

А что такое круглые числа? И потом - мне кажется, что на 50 и 500 и на 32 и 10 - не получится...


Donna   (2003-12-23 17:21:00) [10]

>3APA3A © (23.12.03 17:13) [4]
Круглые числа :) Можно было и на 50 и 500 умножить или на 32 и 10 :)


3APA3A   (2003-12-23 17:20:00) [11]

Ха.. а вот и объяснение твое... Все, всем спасибо, тема закрыта...


3APA3A   (2003-12-23 17:19:00) [12]

to Johmmen - а... все.. понял почему на 100 и на 10000... =)
Как говорится - "и почему я сам не догадался... =)))"

Спасибо...


Johnmen   (2003-12-23 17:19:00) [13]

>3APA3A © (23.12.03 17:13)

Чтобы были примерно такие числа для сравнения
19840312<=19641123<=20031223
:)


Mike Kouzmine   (2003-12-23 17:17:00) [14]

3APA3A © (23.12.03 17:13) [4] 1999 05 11


3APA3A   (2003-12-23 17:13:00) [15]

to Mike Kouzmine да нет... запрос неправильный..Если немного поразмыслишь - придешь к такому же выводу... =))
to Johnmen - а почему умножаешь именно на 100 и 10000 (не догоню что-то никак =))


Sandman25   (2003-12-23 17:12:00) [16]

3APA3A © (23.12.03 17:04)

Храните дату 2 раза: один раз в виде DATE (для фильтров) и один раз в виде трех INT (для группировки).


Johnmen   (2003-12-23 17:10:00) [17]

(day+month*100+year*10000>=day1+month1*100+year1*10000) and
(day+month*100+year*10000<=day2+month2*100+year2*10000)


Mike Kouzmine   (2003-12-23 17:08:00) [18]

А что неправильно? Хранить дату так или запрос?


Наверх

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