|
выборка по дате
|
|||
---|---|---|---|
#18+
имеется : datebegin={01/01/2009} dateend=date()+10 как выбрать все данные из таблицы шо попадают в диапазон между datebegin i dateend по дню и месяцу, тоесть если есть b_d="23/03/1982" - попадает, если b_d="23/05/2001" то не попадает? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 18:05 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Bolik2kимеется : datebegin={01/01/2009} dateend=date()+10 как выбрать все данные из таблицы шо попадают в диапазон между datebegin i dateend по дню и месяцу, тоесть если есть b_d="23/03/1982" - попадает, если b_d="23/05/2001" то не попадает?И что же делать с годом? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 18:11 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
проходящий., не учитывать ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 18:20 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Bolik2kимеется : datebegin={01/01/2009} dateend=date()+10 как выбрать все данные из таблицы шо попадают в диапазон между datebegin i dateend по дню и месяцу, тоесть если есть b_d="23/03/1982" - попадает, если b_d="23/05/2001" то не попадает? Хм, dateend при указанных условиях будет {10/01/2009}. Каким образом 23/03/1982 должна попадать в диапазон между 1 и 10 днями и 1 месяцем? Или я неправильно понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 18:33 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Что-то типа конструкции SUBSTR(DTOS(b_d),5) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 18:40 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
DagЧто-то типа конструкции SUBSTR(DTOS(b_d),5)Ну да, для работы с датой можно использовать только функции работы со строками? Работатть с датой без конвертации ее в строку работать невозможно? Функции работы с датами тут идут по боку? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 19:01 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Здесь нет работы с датами. Если исключить год из даты - то по-любому получится нечто промежуточное - числовое или строковое значение. "Я так думаю!" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 19:22 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
DagЗдесь нет работы с датами. Если исключить год из даты - то по-любому получится нечто промежуточное - числовое или строковое значение. "Я так думаю!" (с)И даже если получится числовое, то все равно надо применять только строковые функции? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 19:54 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
проходящийИ даже если получится числовое, то все равно надо применять только строковые функции? Темна вода в облацех. Для решения предложенной задачи, мне кажется, вполне подойдет between в комбинации с со строковыми величинами. Если у Вас есть другое решение - я ни в коем случае не против. Предложите топикстартеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 20:22 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
DagпроходящийИ даже если получится числовое, то все равно надо применять только строковые функции? Темна вода в облацех. Для решения предложенной задачи, мне кажется, вполне подойдет between в комбинации с со строковыми величинами. Если у Вас есть другое решение - я ни в коем случае не против. Предложите топикстартеру.Between подойдет и с числовыми величинами. И такой вариант есть. И в случае его соответствия задаче предложу. И все равно страсть именно к строковым функциям во всех случаях жизни мной так и непонята. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 21:28 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Sergey Sizov. И все равно страсть именно к строковым функциям во всех случаях жизни мной так и непонята. Могу только восхититься подобным талантом. Увидеть в коротенькой веточке - страсть именно к строковым функциям во ВСЕХ случаях жизни - это, без лести, искусство. "В капле воды он мог разглядеть океан" (с) Спасибо доктор, каждый раз используя строковые функции - буду фиксировать на этом внимание и может даже встану на путь исправления и сотрудничества с администрацией. ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 22:04 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Хм, если стоит примерно следующая задача Из справочника персонала выбрать всех людей, у которых день рождения на этой неделе, вне зависимости от года то я как-то не вижу решения лучше, чем перевод даты в строковое представление с последующим отрезанием года. Ну, да, можно извратиться с выделением месяца и дня, но, как мне кажется, это будет более громоздкое решение, чем предложение Dag . Знаете решение лучше? Покажите как? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 22:21 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
ВладимирМ, day(date()) и month(date()) сложнее строковых функций? И тут надо вычислять позиции нужных элементов? Есть зависимость от строкового формата даты? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 22:51 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
проходящий.ВладимирМ, day(date()) и month(date()) сложнее строковых функций? И тут надо вычислять позиции нужных элементов? Есть зависимость от строкового формата даты? Да можно и без перехода к строкам. Condition=day(DateField)>=day(Date1) .and. day(DateField)<=day(Date2) .and. ; month(DateField)>=month(Date1) .and. month(DateField)<=month(Date2) Вне зависимости от года (хотя можно и его сюда привинтить). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 03:39 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
ВладимирМХм, если стоит примерно следующая задача Из справочника персонала выбрать всех людей, у которых день рождения на этой неделе, вне зависимости от года то я как-то не вижу решения лучше, чем перевод даты в строковое представление с последующим отрезанием года. Ну, да, можно извратиться с выделением месяца и дня, но, как мне кажется, это будет более громоздкое решение, чем предложение Dag . Знаете решение лучше? Покажите как? да, именно такая задача и стоит! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 10:38 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
проходящий.ВладимирМ, day(date()) и month(date()) сложнее строковых функций? И тут надо вычислять позиции нужных элементов? Есть зависимость от строкового формата даты? Решений всегда несколько. Задача заключается в том, чтобы выбрать оптимальное. В данном случае, наиболее простое для понимания и возможной последующей модификации. Пример реализации через Day() и Month() привел reware . Повторю его еще раз слегка изменив для наглядности Код: plaintext 1. 2. 3.
Теперь запишем то же самое, но используя перевод в строковое представление Код: plaintext
На всякий случай напомню, что преобразование DTOS() возвращает строку вида "ГГГГММДД". Т.е. она никак не зависит от формата даты. При помощи функции Right() просто отрезаем фрагмент строки с месяцем и днем. Причем получаем фрагмент в виде удобном для сравнения на больше/меньше. Однако данное решение не учитывает возможный переход через год. Это когда Date1 оказывается концом декабря, а Date2 - началом января. Т.е. месяц начала диапазона оказывается меньше, чем месяц конца диапазона. Собственно, ничего сложного, но если учитывать еще и этот вариант, то условия получаются такие Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Через строковое представление Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
И какой вариант лично вы предпочли бы использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 11:51 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
ВладимирМ, большое спасибо ! все получилось. Лично я предпочел вариан без преобразования в строку, вариант с датами ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 12:16 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
ВладимирМ, предложу такой вариант: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 12:20 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
ВладимирМОднако данное решение не учитывает возможный переход через год. Это когда Date1 оказывается концом декабря, а Date2 - началом января. Т.е. месяц начала диапазона оказывается меньше, чем месяц конца диапазона.Если учитывать диапазон дат больше, чем "ближайшие две недели", то возможны предельные случаи: 1. Заданный диапазон дат - больше 11 месяцев. Date1 = {^2009-01-25}, Date2 = {^2010-01-24}. Алгоритмы, приведенные выше, при любой дате рождения дадут отрицательный результат 2. Начальная и конечная дата диапазона меньше, чем дата рождения. Date1 = {^2000-01-01}, Date2 = {^2000-02-01}, DateField = {^2001-01-15} Нет смысла отмечать ДР до того, как это ДР произошло 3. Начальная дата диапазона больше конечной (пользователь ввел некорректные данные) Date1 = {^2009-05-05}, Date2 = {^2009-04-04} ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 12:40 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 14:57 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
GoshaS Код: plaintext 1. 2. 3. 4. 5.
А от моего варианта сильно отличается? :) Или просто он и взят и по-другому переписан? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 15:06 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
2 Sergey Sizov Да практически то-же самое. Стормозил малёхо ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 15:14 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
В принципе, можно вычислять не саму дату, с которой пойдет сравнение, а диапазоны. Граничные условия DateFrom - начальная дата lnDay - количество дней диапазона, отсчитываемого от начальной даты Код: plaintext 1.
При таком способе совершенно не важно, где окажется конечная дата диапазона. В этом же году или в следующем. Но у использования Date() есть одно слабое место - високосный год и 29 февраля. Очевидно, что Date(2001,2,29) даст ошибку. Пустую дату. Самым корректным решением являлось бы наличие отдельной таблицы-календаря. Связь по Inner JOIN с этой таблицей и фильтрация по реквизитам этой таблицы. Но, разумеется, эту таблицу предварительно надо создать и наполнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 17:47 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Если уж тут проходит конкурс извращенцОв - то могу я представить свою версию? Типа такого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 07:06 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
DagЕсли уж тут проходит конкурс извращенцОв - то могу я представить свою версию? Типа такого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Мда-а... И чем люди от тоски не занимаются. Вашу бы изобретательность, да в мирных целях :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 10:00 |
|
|
start [/forum/topic.php?fid=41&msg=35889857&tid=1586501]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 186ms |
0 / 0 |