Страница 1 из 1

Ламерский вопрос про использование переменных в SQL

Добавлено: 23 Ноябрь 2005, 21:46
lsgsoftware
В SQL я еще чайник.
1.Очень хочется использовать в кларион-программах прямые обращения к SQL типа
Send(File,'тело запроса')
File{Prop:SQL}='тело запроса'
Но это эффективно только в том случае, если в теле запроса можно использовать переменные из кларион-программы.Я конечно понимаю,что SQL-сервер понятия не имеет о каких-то там переменных из клиентской программы, но может быть все-таки можно.
2.В SQL довольно муторный формат для хранения даты и времени.Я вычитал на форуме, что бывают проблемы со сравнением дат.Как старый кларионист я знаю что в кларионе дата и время это просто переменные типа Long.Не мудрствуя лукаво в SQL я для полей даты и времени использовал переменную Int.И вроде все работает нормально.
Правильно ли это???(формат даты клариона доживет почти до конца 21 века, а там и нас грешнх уже не будет)

Добавлено: 24 Ноябрь 2005, 2:10
StillZero
1.Очень хочется использовать в кларион-программах прямые обращения к SQL типа ...
Но это эффективно только в том случае, если в теле запроса можно использовать переменные из кларион-программы.
не совсем понял в чем проблема, так например можно писать

Код: Выделить всё

'SELECT MyField FROM MyTable WHERE MyCondition='&MyClarionVariable
2.В SQL довольно муторный формат для хранения даты и времени.
я так понял речь о MS SQL...
нормальный формат :) и проблем никаких нет, а int-ом пользоваться по ламерски :)

поле дата в SQL - это тип datetime - датавремя
в кларе это поле описывается так:

Код: Выделить всё

DateTimeField       STRING(8) ! 8-байт
DateTimeField_Group GROUP,OVER(DateTimeField)
DateTimeField_DATE     DATE
DateTimeField_TIME     TIME
                    END
как я понимаю поле времени тебе не нужно, поэтому оно всегда будет равно нулю

при сравнении MS SQL учитывает поле времени, а так как оно равно нулю, то, если ранее писали так:

Код: Выделить всё

  MyDate>=loc:DateBegin and MyDate<=loc:DateEnd
то теперь примерно так:

Код: Выделить всё

  MyDate>=loc:DateBegin and MyDate<loc:DateEnd+1