Конференция "Базы" » И снова FB и даты со временем...
 
  • pushkin42 © (05.12.12 02:53) [0]
    Есть абстрактный запрос.


    SELECT ZAKAZY.ID ZI, ZAKAZY.ZAKAZ_SUM, ZAKAZY.STOL_ID,
    ZAKAZY.PAY_TYPE, USERS.USERNAME, COUNT(ZAK_CONTENTS.bludo_id) PB
    FROM ZAKAZY
    INNER JOIN USERS ON (USERS.ID=ZAKAZY.USERID)
    INNER JOIN ZAK_CONTENTS ON (ZAK_CONTENTS.zakaz_id=ZAKAZY.ID)
    WHERE STATUS=3 AND CAST (DATE_OPEN AS DATETIME)>=CAST(:ds AS DATETIME)
    GROUP BY 1,2,3,4,5



    Вопрос: почему при
    xxx.ParamByName('ds').Value=DateTimePicker1.Value фильтр не срабатывает (0 записей), в IBExpert'е данный запрос выполняется с указанием даты и выдает нужные мне записи. Как же так?
  • Медвежонок Пятачок © (05.12.12 09:13) [1]
    Потому что в запросе каст параметра, а сам параметр получает вариант значение.
    И что там в результате получается - одному серверу известно.
  • Медвежонок Пятачок © (05.12.12 09:21) [2]
    Вопрос: почему при
    xxx.ParamByName('ds').Value=DateTimePicker1.Value фильтр не срабатывает (0 записей),


    Все наоборот.
    Фильтр срабатывает и в результате в выборке ноль записей.
  • sniknik © (05.12.12 09:30) [3]
    есть абстрактный вопрос.
    нафига делать приведение поля к типу и параметра к нему же??? почему не сравнивать то что есть, или (если поле в неудобном для сравнения формате) то хотя бы параметр сразу в нужном не присваивать?

    половину "полезности" от параметра "убиваешь".
  • anatoly pogoretsky (05.12.12 09:36) [4]
    > pushkin42  (05.12.2012 02:53:00)  [0]

    F1 + TDateTime type
  • sniknik © (05.12.12 09:42) [5]
    > Как же так?
    это божья кара за написание "абы как". :)
  • pushkin42 © (05.12.12 13:50) [6]
    Ну ок, а как тогда правильно писать? Под ночь тупил как-то...
  • Медвежонок Пятачок © (05.12.12 14:06) [7]
    правильно без извратов с кастом.
    и без присваивания значения параметру через вариант.
  • pushkin42 © (05.12.12 16:32) [8]
    Вот так:

    WHERE STATUS=3 AND DATE_OPEN>=:ds
    xxx.ParamByName('ds').Value := DateTimePicker1.DateTime

    или вот так:

    WHERE STATUS=3 AND DATE_OPEN>='01.02.03 04:05:06'
    т.е. с явным указанием строковой переменной?
  • sniknik © (05.12.12 17:07) [9]
    > DATE_OPEN>='01.02.03 04:05:06'
    сам скажи что больше
    это '01.02.03 04:05:06' или это '01.02.2001 04:05:06'
    ?
  • sniknik © (05.12.12 17:09) [10]
    строка <> дататайм
  • Медвежонок Пятачок © (05.12.12 17:52) [11]
    SELECT :ds_variant as VariantValue, :ds as DateTimeValue, DATE_OPEN
    FROM ZAKAZY

    xxx.ParamByName('ds_variant').Value := DateTimePicker1.DateTime
    xxx.ParamByName('ds').AsDateTime   := DateTimePicker1.DateTime

    И после смотреть в грид.
    Долго и пристально. Пока грид не начнет смотреть на тебя.
  • anatoly podgoretsky © (05.12.12 17:56) [12]

    > sniknik ©   (05.12.12 17:07) [9]

    Змей однако.
  • Ega23 © (13.12.12 00:40) [13]
    А я ещё, помнится, раз наколовшись в определении параметров по-умолчанию, отключал нафиг ParamCheck и создавал параметры в ран-тайм с привязкой к типу данных. Зато вот уж точно никаких проблем не было.
 
Конференция "Базы" » И снова FB и даты со временем...
Есть новые Нет новых   [119485   +101][b:0][p:0.001]