![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка корректности даты в TSQL [D6, FireBird 2.1]
DelphiN! © (2009-11-16 12:49:00)Доброго времени суток!
Необходимо проверить корректность даты в запросе, например :
select * from table where (field1 = 'TEXT')and(IsCorrectDate('31.11.2009'))
Данный запрос не должен выводить ничего, так как даты 31.11.2009 не существует, однако к сожалению функции IsCorrectDate не существует, какая функция используется для этих целей?
Виталий Панасенко (2009-11-16 13:58:00) [1]в нем сможешь сделать CAST и в случае ошибки исправить ситуацию...
Виталий Панасенко (2009-11-16 13:57:00) [2]
> DelphiN! (16.11.09 13:13) [6]
>
>
> > Сергей М. © (16.11.09 12:54) [3]
>
>
> Просто есть задача написать SQL запрос в котором будет 31
> стоблец (дни месяца) которые заполнены соответствующими
> значениями, при этом если в месяце меньше 31го дня, заполнять
> столбец(28-31) не нужно. Использовать процедуры нельзя .
> ..
используй Execute block...
Виталий Панасенко (2009-11-16 13:56:00) [3]вообще-то дату нужно передавать в формате ГГГГ-ММ-ДД и пох... все настройки на Региональные стандарты. это если параметры не канают по каким-то причинам
Sergey13 (2009-11-16 13:39:00) [4]> [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'))
?
Сергей М. (2009-11-16 13:21:00) [5]
> есть задача написать SQL запрос в котором будет 31 стоблец
Запрашивай ВСЕ данные за месяц, и уже на стороне клиента получив эти данные изображай их в 31 столбец.
Для этого вообще-то и компоненты есть подходящие.
Сергей М. (2009-11-16 13:14:00) [6]
> DelphiN! (16.11.09 13:10) [5]
> Так выдает ошибку
Ну и что ?
Задача-то выполнена - запрос "не вывел ничего".
А если не нравится исключение, то заткнуть его проще простого - перехватить и обработать исключение в блоке try..except
DelphiN! (2009-11-16 13:13:00) [7]
> Сергей М. © (16.11.09 12:54) [3]
Просто есть задача написать SQL запрос в котором будет 31 стоблец (дни месяца) которые заполнены соответствующими значениями, при этом если в месяце меньше 31го дня, заполнять столбец(28-31) не нужно. Использовать процедуры нельзя ...
DelphiN! (2009-11-16 13:10:00) [8]
> Сергей М. © (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"
Сергей М. (2009-11-16 13:01:00) [9]Вообще говоря, выносить подобного рода проверки на сторону сервера довольно глупо.
Строка с 31-м ноября же не с луны же к тебе свалилась ?
Что же мешает проверить ее корректность прямо на клиенте, дабы не передавать на сервер заведомую ахинею и не грузить его по таким пустякам ?
Сергей М. (2009-11-16 12:54:00) [10]CAST()
DelphiN! (2009-11-16 12:53:00) [11]
> Sergey13 © (16.11.09 12:52) [1]
мне нужно именно строку ...
Sergey13 (2009-11-16 12:52:00) [12]> [0] DelphiN! (16.11.09 12:49)
Передавай через параметр дату, а не строку. Заодно и убедишься.