powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Интересное наблюдение: косяк при преобразовании даты
14 сообщений из 14, страница 1 из 1
Интересное наблюдение: косяк при преобразовании даты
    #39362986
l-evgene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть простенький запрос:
Код: plsql
1.
2.
3.
SELECT Заявки.[№заявки], Заявки.ДатаПрихода FROM Заявки
WHERE (((Заявки.ДатаПрихода)>=CLng(#8/1/2016#) And (Заявки.ДатаПрихода)<=CLng(#8/31/2016#)))
ORDER BY Заявки.ДатаПрихода;

Если "Заявки" - таблица MS Access, результат предсказуем (рис.1). Но если "Заявки" - связанная таблица SQL server, результат странный (рис.2). Запрос "выбрасывает" первую дату диапазона и "захватывает" дату, следующую сразу следом за диапазоном.
Этому есть рациональное объяснение или все-таки глюк?
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363036
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравнивать поле с типом дата (?) с литералом даты, преобразованным в длинное целое? Да Вы, батенька, эстет...
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363041
Фотография гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в Аксе, например, дата хранится в Double, слева от знака (справа - колич минут и секунд)...
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363094
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо, это потому, что в Аксе 0 - это 30.12.1899, а в SQL сервере 01.01.1900
Используйте явные даты, если нужна совместимость запросов
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363098
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CLng выполняется на стороне Акса по его правилам, а серверу передается число, которое обрабатывается уже по другим правилам на стороне сервера, так что никаких глюков, кривой запрос.
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363102
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гурДв Аксе, например, дата хранится в Double
Ну это замечание на самом деле некорректное.
Любые данные хранятся в бинарном виде. Просто у Datetime и у Double размер совпадает, да ещё интерпретация данных как даты сходна, посему преобразование максимально простое.
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363319
l-evgene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShinтак что никаких глюков, кривой запрос.
Я и не претендую на то, что запрос прямой (ровный?). Хотелось разобраться в причине странного результата. Кстати, в ходе следствия выяснил, что запрос "съедает" не одну дату в начале выборки, а две (1-е и 2-е число).
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363367
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
l-evgeneХотелось разобраться в причине странного результата
Я писал выше, что операция преобразования даты в число на стороне Акцесса выполняется по другим правилам, чем обратное преобразование на сервере, в этом и причина.
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363430
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
l-evgene,
l-evgeneMrShinтак что никаких глюков, кривой запрос.
Я и не претендую на то, что запрос прямой (ровный?). Хотелось разобраться в причине странного результата. Кстати, в ходе следствия выяснил, что запрос "съедает" не одну дату в начале выборки, а две (1-е и 2-е число).
вы не первый 693
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363545
l-evgene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport,
спасибо за пендель). А у Вас очень хорошая память
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363764
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
l-evgene,

опыта маловато конечно с sql.
Тоже бодался и не совсем мог понять, разные результаты на разных машинах.
В общем - на ветке sql нашел может даже в их факе.
Дату на сервер нужно текстом.
Там он у себя его нормально пережевывает.
А при обратном вроде нормально дату преобразовывает.
Если вдруг кому нужно
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363778
Игортанl-evgene,
Дату на сервер нужно текстом.


в формате YYYYMMDD:

Код: sql
1.
2.
3.
SELECT Заявки.[№заявки], Заявки.ДатаПрихода FROM Заявки
WHERE (((Заявки.ДатаПрихода)>='20160801' And (Заявки.ДатаПрихода)<='20160831'))
ORDER BY Заявки.ДатаПрихода;
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363831
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДатаНаСервер,

да, хорошо что уточнили
я забыл это указать..
...
Рейтинг: 0 / 0
Интересное наблюдение: косяк при преобразовании даты
    #39363978
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще лучше всего в подобных случаях использовать параметры к запросу, а не текст. Это и работает быстрее, и не будет проблем, подобных этой. Если, например, требуется передать текст в запрос без использования параметров, то придется самостоятельно чистить текст от спецсимволов и кавычек, с датами нужно учитывать потенциальные проблемы с региональным форматом даты, извращаясь с Format или функцией Str (не CStr!) и т.п. При использовании параметров таких проблем не возникает.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Интересное наблюдение: косяк при преобразовании даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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