|
Вопрос по работе запроса к Access | ☑ | ||
---|---|---|---|---|
0
Alochka
13.11.14
✎
12:57
|
В 1с7.7 пишу запрос к базе *.mdb. Все работает, за исключением одной странности. Запрос задается в интервале дат. Концовка запроса выглядит так:
WHERE (((CHECKINOUT.CHECKTIME) Between #12/11/2014 00:00:00# And #12/11/2014 23:59:59#)); Данные есть за 11, 12, 13 ноября. Так вот, если ставить только 12 число, то запрос пустой. Если ставить только 11 или только 13, запрос данные выдает, если с 10-12, то тоже выдает, а вот только за 12 число пусто и все. |
|||
1
Wobland
13.11.14
✎
13:07
|
давай свой вопрос
|
|||
2
Alochka
13.11.14
✎
13:12
|
Почему за 12 число пусто? Причем только в том случае, когда запрос делается только за 12 число.
|
|||
3
Wobland
13.11.14
✎
13:13
|
ничего не попишешь, таковы данные
|
|||
4
Alochka
13.11.14
✎
13:14
|
ну так с 10 - 12 выдает массу данных за 12 число
|
|||
5
Alochka
13.11.14
✎
13:15
|
ха! с 12-13 тоже пустой
|
|||
6
Wobland
13.11.14
✎
13:20
|
> массу данных за 12 число
это сейчас про поле CHECKINOUT.CHECKTIME? |
|||
7
Alochka
13.11.14
✎
13:21
|
да
|
|||
8
Wobland
13.11.14
✎
13:22
|
ну говори запрос
|
|||
9
Alochka
13.11.14
✎
13:23
|
Вот весь запрос:
SELECT USERINFO.Badgenumber AS ACNO, CHECKINOUT.CHECKTIME AS ONLYDATE, Format(CHECKINOUT.CHECKTIME,'hh:nn:ss') AS ONLYTIME, CHECKINOUT.CHECKTYPE FROM USERINFO INNER JOIN CHECKINOUT ON USERINFO.USERID = CHECKINOUT.USERID WHERE (((CHECKINOUT.CHECKTIME) Between #12/11/2014 00:00:00# And #12/11/2014 23:59:59#)); |
|||
10
Wobland
13.11.14
✎
13:24
|
>INNER JOIN
вот тут тоже фильтр |
|||
11
Alochka
13.11.14
✎
13:27
|
я пробовала так:
SELECT USERINFO.Badgenumber AS ACNO, CHECKINOUT.CHECKTIME AS ONLYDATE, Format(CHECKINOUT.CHECKTIME,'hh:nn:ss') AS ONLYTIME, CHECKINOUT.CHECKTYPE FROM USERINFO, CHECKINOUT WHERE (USERINFO.USERID = CHECKINOUT.USERID) AND (((CHECKINOUT.CHECKTIME) Between #13/11/2014 00:00:00# And #13/11/2014 23:59:59#)); Результат тот же. |
|||
12
hhhh
13.11.14
✎
13:39
|
(11) может сначала месяц надо? Типа 11/12/2014 ??
|
|||
13
hhhh
13.11.14
✎
13:39
|
хотя тогда на 13 должно было ругаться.
|
|||
14
Alochka
13.11.14
✎
13:40
|
(13) Тогда бы оно не работало вообще, месяца 13 нет, а оно с 13 числом отлично работает
|
|||
15
Alochka
13.11.14
✎
13:41
|
от between тоже пробовала уходить, то же самое
это что-то именно в датах, в их формате, может, какой-то глюк аксеса |
|||
16
hhhh
13.11.14
✎
13:45
|
а если без времени?
|
|||
17
Alochka
13.11.14
✎
13:50
|
(16) выдает все что есть за все даты
|
|||
18
spectre1978
13.11.14
✎
13:51
|
(0) литералы даты в джет пишутся по-американски, т.е.
#mm/dd/yyyy# |
|||
19
Alochka
13.11.14
✎
14:00
|
(18) так и написано, только мне еще время нужно
|
|||
20
Alochka
13.11.14
✎
14:04
|
(18) кажется вы правы, сейчас еще проверю
|
|||
21
Alochka
13.11.14
✎
14:09
|
spectre1978, Вы меня спасли. Спасибо огромное!!!
Но почему-то в таблицах и в результатах запроса я вижу формат: #dd/mm/yyyy# это и сбило, скорее всего где-то настройка, а в sql запросе оно хочет именно #mm/dd/yyyy# |
|||
22
Alochka
13.11.14
✎
14:11
|
И еще странно почему работает так:
Between #13/11/2014 00:00:00# And #13/11/2014 23:59:59#)); Такой себе списочек за 13 ноября |
|||
23
Alochka
13.11.14
✎
14:16
|
WHERE (((CHECKINOUT.CHECKTIME) Between #11/13/2014 00:00:00# And #11/13/2014 23:59:59#));
И так списочек за 13 ноября :) |
|||
24
Alochka
13.11.14
✎
14:17
|
я так понимаю, подождем 14 и 15 и все встанет на свои места :)
|
|||
25
spectre1978
13.11.14
✎
15:10
|
(22) в таблицах у вас отображается дата в соответствии с региональными настройками вашей винды. А литералы даты в JetSQL записываются не в соответствии с региональными настройками, а так, как в JetSQL полагается. Полагается - сначала месяц.
|
|||
26
spectre1978
13.11.14
✎
15:11
|
(22) Данный литерал записан с ошибкой, 13 месяца не бывает. Как в этом случае отрабатывает движок Jet, я не знаю.
|
|||
27
Alochka
13.11.14
✎
21:51
|
(25) Спасибо!
|
|||
28
Jaap Vduul
14.11.14
✎
00:20
|
(26)>> Данный литерал записан с ошибкой
Не совсем верно. Корректным литералом считается запись не только в us-формате, но также и в любых форматах, допустимых для текущих региональных настроек, главное "решётками"(#) огородить. А вот в запросах действительно надо обязательно использовать us-формат, во избежание разночтений. В документации access это явно указано: http://office.microsoft.com/en-us/access-help/where-clause-HP001032287.aspx Соответственно и Jet сначала пытается интерпретировать литералы даты по американскому формату, а когда они в этот формат не укладываются, то используются региональные настройки. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |