![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сравнение дат в 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]
А что неправильно? Хранить дату так или запрос?