Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос с датами / 25 сообщений из 26, страница 1 из 2
27.06.2006, 13:49
    #33816743
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Странная вешь получаеться. Пишу на сервак такой запрос
sqlexec(sql_con,"select * from festival where data1 between 01-01-2000 and 31-12-2006","temp")
select temp
brow
Таблица пуста!!!!!! Почему???
когда прописываю not between все есть. Какойто парадокс!! Почему так??

Еще прикол. тоже запрос но с таким условием: data1>=05-05-2006 and data1<=06-05-2006 - фильтр работает правильно и выводит записи в соответствии с запросом, НО, data1>=05-05-2006 and data1<=07(или 08)-05-2006 - выводяться записи от 05-05-2006 и пока таблица не кончиться. Фигня какая-то!!! Что не так пишу или делаю???
...
Рейтинг: 0 / 0
27.06.2006, 14:02
    #33816795
StasL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
НедоходящийЕще прикол. тоже запрос но с таким условием: data1>=05-05-2006 and data1<=06-05-2006 - фильтр работает правильно и выводит записи в соответствии с запросом, НО, data1>=05-05-2006 and data1<=07(или 08)-05-2006 - выводяться записи от 05-05-2006 и пока таблица не кончиться. Фигня какая-то!!! Что не так пишу или делаю???
А у тебя какой формат даты? DD-MM-YYYY или MM-DD-YYYY ?
07 и 08 месяц в 2006 году еще не наступил. :-))))
...
Рейтинг: 0 / 0
27.06.2006, 14:49
    #33816977
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
2 StasL

С форматом все OK. Британский. DD-MM-YYYY.
...
Рейтинг: 0 / 0
27.06.2006, 14:59
    #33817017
StasL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Недоходящий2 StasL

С форматом все OK. Британский. DD-MM-YYYY.
И на сервере и на клиенте? Кстати сервер какой?
...
Рейтинг: 0 / 0
27.06.2006, 15:20
    #33817096
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
2 StasL
на клиенте как я писал. А на серваке я незнаю как посмотреть, но все стоит по умолчанию. Просматривая записи там выводиться британский вариант. server2000
...
Рейтинг: 0 / 0
27.06.2006, 15:36
    #33817161
StasL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Сделай запрос
sqlexec(sql_con,"select * from festival where data1 between 01-01-2000 and 12-31-2006 ","temp")
и посмотри что вернется.
Формат даты на сервере может отличаться от формата на клиенте. А так как твой SELECT выполняет сервер, он выполняет его в своем формате и возвращает тебе записи, а уже твой клиент меняет формат на DD-MM-YYYY для вывода тебе на экран.
...
Рейтинг: 0 / 0
27.06.2006, 15:39
    #33817170
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
А что, для сервера константы типа "дата" так прямо и пушутся как математические выражения: 05-05-2006 = 5 - 5 - 2006 = -2006

Может, их все-таки какими-либо дополнительными символами окружают?

Если речь идет о MS SQL, то надо писать так:

Код: plaintext
sqlexec(sql_con,"select * from festival where data1 between '20000101' and '20061231' ","temp")

Т.е. "дата" - это символьная строка формата ГГГГММДД обязательно окруженная одинарными кавычками.
...
Рейтинг: 0 / 0
27.06.2006, 17:19
    #33817515
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
2 StasL
Пробывал - ничего. Все так же.


2 ВладимирМ
Пишу по Вашему примеры выдает -1.
...
Рейтинг: 0 / 0
27.06.2006, 17:23
    #33817524
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
причину нашел. Работает вот так:
sqlexec(sql_con,"select * from festival where data1 between '01-01-2006' and '31-12-2006' ","temp")
...
Рейтинг: 0 / 0
27.06.2006, 19:51
    #33817836
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
А как выставлять формат даты на серваке? sql2000
...
Рейтинг: 0 / 0
27.06.2006, 23:19
    #33817986
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
select *
from festival
where data1 between
cast('01-01-2000' as datetime) and cast('31-12-2006' as datetime)
а так сервер выдает какую нибудь ошибку?
а если это в интерактив SQL замутить? просто тупо так и прописать, минуя фокс?
...
Рейтинг: 0 / 0
27.06.2006, 23:55
    #33818023
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
только что проверил, на учебной базе (скрипты с www.sql-ex.ru)
_connect=SQLCONNECT('ono','dba','sql')
_query="select * from utb where b_datetime>='2002-05-31'"
? SQLEXEC(_connect,_query,'c_tmp')
SELECT c_tmp
BROWSE
вроде как все работает, только фишка в том, что:
на MSSQL по умолчанию даты: YYYY-MM-DD
все это можно проверить в "sql query analiser" поставляется в стандартном пакете. А вот как [quote]А как выставлять формат даты на серваке? sql2000[/quote] это есть форум по MSSQL
http://www.sql.ru/forum/actualtopics.aspx?bid=1
:)
...
Рейтинг: 0 / 0
28.06.2006, 07:57
    #33818205
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
После соединения с сервером выдайте команду:
? SQLEXEC(_connect, 'SET DATEFORMAT DMY')
После этого сервер будет понимать ваши даты в строковом виде в формате DD-MM-YYYY.

С уважением, Алексей
...
Рейтинг: 0 / 0
28.06.2006, 16:57
    #33819873
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Да. Как онаписал Aleksey-K , нужно во всех запросах писать приставку датопонимания сервака и все работает чудненько.
...
Рейтинг: 0 / 0
29.06.2006, 02:12
    #33820579
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Hi Недоходящий!

IMHO вместо мучения с разными форматами дат стоит использовать вместо
литералов простые параметры - положив в фоксе в них настоящую дату, а не её
символьное выражение.

ldStart = DATE(2006,1,1)
ldEnd = DATE(2006,12,31)
lnRes = SQLEXEC(..., "SELECT ... WHERE data1 >=?m.ldStart AND
data1<=?m.ldEnd")

При этом если выполняется не одиночный запрос а много подобных (например
нужно выбрать данные за другой диапазон) - то получим и очевидный выигрыш в
скорости - за счёт того, что серверу не придётся постоянно выполнять анализ
и оптимизацию разнообразных запросов - так запрос будет один и различны лишь
параметры его вызовов...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.06.2006, 08:11
    #33820672
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
НедоходящийДа. Как онаписал Aleksey-K , нужно во всех запросах писать приставку датопонимания сервака и все работает чудненько.
Не надо писать это во всех командах. Установки SET .... - это установки на уровне сессии.
После установления соединения с сервером один раз сделайте так:
Код: plaintext
1.
2.
sqlexec(sql_con,"SET NOCOUNT ON")
sqlexec(sql_con,"SET DATEFORMAT DMY")
sqlexec(sql_con,"SET DATEFIRST 1")
Возможно, потребуется еще ряд установок типа SET QUOTED_IDENTIFIER.. SET LOCK_TIMEOUT ... и пр.
С уважением, Алексей.
...
Рейтинг: 0 / 0
03.07.2006, 14:17
    #33827586
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Hi Aleksey!

Это просто есть "не очень хорошо" по целому ряду причин:
- Если используются удалённые представления, то вполне вероятна ситуация
когда соединение устанавливатеся автоматически - при открытии
представления - и ничего прописать естественно не получается (это зависит от
свойства ShareConnection соединения и свойства Shared курсора и вообще от
того устанавливается соединение вручную или наоборот - для SPT берётся хендл
из RV). Это конечно обходится, НО если можно обойтись без этого то конечно
лучше так и делать.
- А если нам потребуется перейти на другую серверную платформу? Да даже
банально - если завтра (в SQL 2007 или там SQL 2010) MS откажется от
поддержки каких-то из этих настроек - то скорее всего придётся переписывать
код - опять же лучше этого избежать, если есть такая возможность.
- Опять таки не самый последний аргумент - производительность. Я в курсе про
некоторые проблемы SQL Server при использовании SQLPrepare - но для других
СУБД (в частности для Oracle) использование параметризованных запросов, а
тем паче SQLPrepare() даёт весьма заметный выигрыш - по сравнению с
"пробитыми" как константы значениями в запросах. Конечно SELECT-ы не часто
выполняются "пачками" - когда запрос один и лишь параметры меняются
многократно - а вот INSERT и UPDATE часто используют подобную схему (при
"переносе" данных сразу всего локального курсора/таблицы на сервер).

P.S. Да, ряд настроек к сожалению не победить, и приходится иногда
использовать явное управление свойствами коннекции...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
03.07.2006, 16:28
    #33828095
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Hi Igor!
Какое отношение имеют установки вида SET NOCOUNT ON, SET DATEFORMAT dmy, SET XACT_ABORT ON и пр. к SQLPrepare ? Я что-то не уловил!
А по поводу платформонезависимости серверного приложения (т.е. ТОЛЬКО ANSI )- так это миф. Я во всяком случае не встречал СЕРВЕРНЫЙ платформонезависимый код.
А кстати, Игорь, как вы без SET .... обходитесь? Например, как устанавливаете время ожидание снятия блокировки с требуемого ресурса (SET LOCK_TIMEOUT ....)?
С уважением, Алексей
...
Рейтинг: 0 / 0
03.07.2006, 21:17
    #33828780
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
2 all

Подскажите пожалуйста или дайте ссылку как на машине настроить SQL SERVER 2000 чтоб к нему можно было подключиться по локалке. Мучаюсь, мучаюсь и ничего не получаеться.
...
Рейтинг: 0 / 0
04.07.2006, 08:26
    #33829038
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Вы имеете в виду настройки сервера или клиента?
С уважением, Алексей
...
Рейтинг: 0 / 0
05.07.2006, 00:45
    #33831509
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Hi Aleksey!

> Какое отношение имеют установки вида SET NOCOUNT ON, SET DATEFORMAT
> dmy, SET XACT_ABORT ON и пр. к SQLPrepare ? Я что-то не уловил!

К SQLPrepare никакого - я про него упомянул лишь в контексте "ускорения
выполнения запросов" - которое происходит так-же при отказе от жёстко
прописанных в командах констант, т.е. замене их на параметры.

> А по поводу платформонезависимости серверного приложения (т.е. ТОЛЬКО
> ANSI )- так это миф. Я во всяком случае не встречал СЕРВЕРНЫЙ
> платформонезависимый код.

В простых случаях клиентский код вполне себе платформенно-независим. Конечно
если он действительно прост и не представляет собой что-то более сложное чем
примитивные SELECT/INSERT/UPDATE/DELETE... В принципе работа с RemoteView
как раз и укладывается в такую схему - ничего сложнее этих команд RV не
генерирует...

> А кстати, Игорь, как вы без SET .... обходитесь?

Увы, приходится таки использовать SET - для установки
NLS_NUMERIC_CHARACTERS - без этого родной Oracle ODBC драйвер некорректно с
дробными полями работает... Впрочем это вполне можно обойти и "снаружи" -
подпихнув через переменную окружения NLS_LANG вместо CIS/RUSSIA ненавистную
AMERICA ;) Тогда ODBC драйвер сам переключится на "нормальные" разделители.

> Например, как устанавливаете время ожидание снятия блокировки с требуемого
> ресурса (SET LOCK_TIMEOUT ....)?

Это мне без нужды было - я с Oracle работаю - там рулят совсем другие
принципы (он не блокировочник и проблем с блокировками там значительно
меньше) - и клиентское приложение там совсем не при делах...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
05.07.2006, 00:45
    #33831510
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Hi Недоходящий!

Какой версии? Как устанавливался?
Вообще не пробовал по соседнему разделу ПОИСКом попользоваться?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
05.07.2006, 02:40
    #33831534
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
2 all
SQL 2000
На клиентской машине ставлю соннектор и выставляю только протокол TCP с портом 1433. А на сервере все по дефолту и тотже протокол с тем же портом. Поиском пользуюсь до сих пор но пока что мало помогает.

Проблема возникла неожиданно. Закончил программу. Прописал SQLSTRINGCONNECT как положенно. НО прога не конектиться к серваку. Пишет сервера нет или недоступен. Я замучился в настройках лазить, ниче не помагает. Пожалуйста подскажите что и как правильно надо делать чтоб заработало.
...
Рейтинг: 0 / 0
05.07.2006, 10:40
    #33831971
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Приведите строку подключения для SQLSTRINGCONNECT
С уважением, Алексей
...
Рейтинг: 0 / 0
07.07.2006, 00:26
    #33837057
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос с датами
Hi Недоходящий!

Ты не пробовал ВНИМАТЕЛЬНО ЧИТАТЬ адресованные тебе сообщения? Или результат
тебя мало интересует - ну тогда извини что вмешиваюсь, больше не буду...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос с датами / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]