Конференция "Базы" » Проверка корректности даты в TSQL [D6, FireBird 2.1]
 
  • DelphiN! (16.11.09 12:49) [0]
    Доброго времени суток!
    Необходимо проверить корректность даты в запросе, например :


    select * from table where (field1 = 'TEXT')and(IsCorrectDate('31.11.2009'))


    Данный запрос не должен выводить ничего, так как даты 31.11.2009 не существует, однако к сожалению функции IsCorrectDate не существует, какая функция используется для этих целей?

  • Sergey13 © (16.11.09 12:52) [1]
    > [0] DelphiN!   (16.11.09 12:49)

    Передавай через параметр дату, а не строку. Заодно и убедишься.
  • DelphiN! (16.11.09 12:53) [2]

    > Sergey13 ©   (16.11.09 12:52) [1]


    мне нужно именно строку ...
  • Сергей М. © (16.11.09 12:54) [3]
    CAST()
  • Сергей М. © (16.11.09 13:01) [4]
    Вообще говоря, выносить подобного рода проверки на сторону сервера довольно глупо.

    Строка с 31-м ноября же не с луны же к тебе свалилась ?
    Что же мешает проверить ее корректность прямо на клиенте, дабы не передавать на сервер заведомую ахинею и не грузить его по таким пустякам ?
  • DelphiN! (16.11.09 13:10) [5]

    > Сергей М. ©   (16.11.09 12:54) [3]
    > CAST()
    >
    >


    (cast('31.11.2009' as date)='31.11.2009')
    ??
    Так выдает ошибку
    Overflow occurred during data type conversion. Conversion error from string "31.11.2009"
  • DelphiN! (16.11.09 13:13) [6]

    > Сергей М. ©   (16.11.09 12:54) [3]


    Просто есть задача написать SQL запрос в котором будет 31 стоблец (дни месяца) которые заполнены соответствующими значениями, при этом если в месяце меньше 31го дня, заполнять столбец(28-31) не нужно. Использовать процедуры нельзя ...
  • Сергей М. © (16.11.09 13:14) [7]

    > DelphiN!   (16.11.09 13:10) [5]


    > Так выдает ошибку


    Ну и что ?
    Задача-то выполнена - запрос "не вывел ничего".
    А если не нравится исключение, то заткнуть его проще простого - перехватить и обработать исключение в блоке try..except
  • Сергей М. © (16.11.09 13:21) [8]

    > есть задача написать SQL запрос в котором будет 31 стоблец


    Запрашивай ВСЕ данные за месяц, и уже на стороне клиента получив эти данные изображай их в 31 столбец.
    Для этого вообще-то и компоненты есть подходящие.
  • Sergey13 © (16.11.09 13:39) [9]
    > [6] DelphiN!   (16.11.09 13:13)
    > Просто есть задача написать SQL запрос в котором будет 31
    > стоблец (дни месяца) которые заполнены соответствующими
    > значениями

    И как это соотносится с

    > [0] DelphiN!   (16.11.09 12:49)
    > select * from table where (field1 = 'TEXT')and(IsCorrectDate('31.11.2009'))

    ?
  • Виталий Панасенко (16.11.09 13:56) [10]
    вообще-то дату нужно передавать в формате ГГГГ-ММ-ДД и пох... все настройки на Региональные стандарты. это если параметры не канают по каким-то причинам
  • Виталий Панасенко (16.11.09 13:57) [11]

    > DelphiN!   (16.11.09 13:13) [6]
    >
    >
    > > Сергей М. ©   (16.11.09 12:54) [3]
    >
    >
    > Просто есть задача написать SQL запрос в котором будет 31
    > стоблец (дни месяца) которые заполнены соответствующими
    > значениями, при этом если в месяце меньше 31го дня, заполнять
    > столбец(28-31) не нужно. Использовать процедуры нельзя .
    > ..

    используй Execute block...
  • Виталий Панасенко (16.11.09 13:58) [12]
    в нем сможешь сделать CAST и в случае ошибки исправить ситуацию...
 
Конференция "Базы" » Проверка корректности даты в TSQL [D6, FireBird 2.1]
Есть новые Нет новых   [134435   +33][b:0][p:0.001]