|
выборка по дате
|
|||
---|---|---|---|
#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 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
DagЕсли уж тут проходит конкурс извращенцОв - то могу я представить свою версию? Типа такого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Если убрать все ваши навороты, то, по сути, вы написали такое условие Код: plaintext
Но по условиям задачи сравниваются только месяц и день. Без учета года. А в вашем решении год играет существенную роль. Т.е. поставленную задачу не решает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 10:44 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 14:40 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
GoshaS Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Вы не ту дату сравниваете с 29 февраля. Ошибку будет давать функция Date(), следовательно, анализировать надо те параметры, которые будут передаваться в эту функцию. Если dr - это поле таблицы, то разве ваш код исключает возможность этой ошибки в функции Date()? Ведь день месяца и сам месяц берется именно из поля таблицы. Если вы хотите исключить ошибку високосного года, то в вашем примере надо озаботится тем, чтобы YEAR(ldStartDate) и Year(ldEndDate) возвращали именно високосный год. Например, 2000. А сдвиг на один день ошибку не исключает. Другими словами, год надо задать явно. Код: plaintext 1. 2.
Тогда уже не важно, что будет стоять в качестве месяца и дня в функции Date(), поскольку год все-равно високосный. Ошибки быть не может. Однако при переходе через новый год это все-равно может породить ошибку, поскольку следующий год будет не високосным и опять возможно 29 февраля. Но здесь можно исходить из предполождения, что рассматриваемый период заведомо меньше месяца. Т.е. если попали на 29 февраля и год не високосный, то функция Date() вернет пустую дату. А пустая дата заведомо не попадает в диапазон между любыми не пустыми датами. И, поскольку интервал меньше месяца, то при переходе через новый год февраль по любому будет вне рассматриваемого диапазона. Формально ошибка есть, но фактически она не влияет на результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 15:03 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Bolik2k, Для выборки работников(ещё неуволенных) с заданным возрастом WOZR за данный период DATN,DATK использую представление с таки SQL-запросом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 16:32 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
О Как :-) за скорость обработки ничего не скажу, но на первый взгляд, должно отработать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Ага, что-то не то написал, как в анекдоте про блондинку с двумя шоколадками по 10 рублей :-) Работа все время отвлекает ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 17:05 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
2 GoshaS В функцию Date() недопустимо пердавать нулевые значения параметров. Date(2000,1,0) - выдаст сообщение об ошибке и породит исключение. Т.е. SQL-запрос просто вылетит, если DAY(dr) - 1 = 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 17:18 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 17:59 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
GoshaS Код: plaintext 1. 2. 3. 4.
Дело не в красоте. В этом случае теряется смысл вашего кода. Вроде как вычитаем, а вроде и не вычитаем. В чем тогда смысл операции? Особенно, если конечная дата диапазона - это как раз первое число месяца? Кстати, (Date() - 1) вовсе не то же самое, что DATE(..., DAY()-1) применительно к 1 числу месяца. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 18:03 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 18:32 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
В общем-то, примерно с этого все и началось. Перечитайте еще раз первые ответы данной темы. Только кроме функци DTOC() лучше применять функцию DTOS(). Ее работа не зависит от текущей настройки SET DATE она всегда возращает строку формата "ГГГГММДД", что очень удобно для сортировки. Т.е. вместо Код: plaintext 1.
используется просто Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 21:34 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
здравствуйте! вопрос не совсем в тему, но тоже касается даты (я посчитал, что он не достоин отдельной темы, поэтому пишу здесь) у меня есть 3 переменных: a=11 * месяц b=10 * число c=2000 * год есть таблица БД с полем типа date подскажите как записать в это поле дату, которую можно составить из этих переменных по событию "клик" кнопки? а то я чувствую гугл скоро будет тошнить от моих запросов, т.к. все что я пытался сделать ни к чему не привело((( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2009, 23:35 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Все слова в отдельности понятны, а вместе - нет. Не только гуголь встанет в тупик. В чем заключается сакральный смысл этих манипуляций ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2009, 07:09 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
TempUsrздравствуйте! вопрос не совсем в тему, но тоже касается даты (я посчитал, что он не достоин отдельной темы, поэтому пишу здесь) у меня есть 3 переменных: a=11 * месяц b=10 * число c=2000 * год есть таблица БД с полем типа date подскажите как записать в это поле дату, которую можно составить из этих переменных по событию "клик" кнопки? а то я чувствую гугл скоро будет тошнить от моих запросов, т.к. все что я пытался сделать ни к чему не привело((( Записать что-то в поле Код: plaintext
Сформировать из известных значений Года, Месяца и Дня собственно дату можно несколькими способами Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2009, 11:51 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
Ошибка: Function argument value, type or count is invalid подскажите, что я опять не так делаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2009, 13:49 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
Dag в поле data типа date таблицы БД хочу записать дату своего рождения, дата формируется из трех чисел - день, месяц, год, которые я получаю из компонент textbox вот как-то так =) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2009, 13:55 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
TempUsr Код: plaintext 1. 2. 3. 4. 5. 6.
Ошибка: Function argument value, type or count is invalid подскажите, что я опять не так делаю? По умолчанию, объект TextBox содержит информацию в символьном типе данных. А функция STR() предполагает преобразование числового типа в символьное представление. О чем вы должны были узнать прочитав справку по функции STR(). У вас два пути решения проблемы: 1. Указать объекту TextBox вводить данные в числовом типе данных. Это можно сделать задав значение TextBox.Value = 0 в дизайнере формы 2. Если вы оставляете символьный тип данных в объекте TextBox, то вместо функции STR() следует использовать функцию AllTrim() для отсечения возможных ведущих и концевых пробелов Код: plaintext
И еще, я бы вам настоятельно советовал, прежде чем спрашивать, прочитать справку в HELP по используемым функциям. Кроме того, при возникновении ошибки появляется диалоговое окно в котором есть кнопка Help. Если ее нажать, то открывается статья, в которой достаточно внятно объясняется причина ошибки и как ее исправить. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2009, 14:05 |
|
выборка по дате
|
|||
---|---|---|---|
#18+
автор кнопка Help. Если ее нажать, то открывается статья об этом не знал, спасибо и вообще за все спасибо, больше вы от меня глупых вопросов не услышите ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2009, 15:01 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1586501]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 162ms |
0 / 0 |