Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проверка корректности даты в 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)

Передавай через параметр дату, а не строку. Заодно и убедишься.


Наверх

Титульная страница Поиск, карта сайта Написать письмо