Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Большой Жирный Медведь
Member

Откуда: Иркутск
Сообщений: 31
Здравствуйте!
Просьба знатокам прокомментировать сл. ситуацию:


Sub test()
Dim TmpDate As Date

TmpDate = Format("31.03.2004", "MM/DD/YYYY")
Debug.Print TmpDate
End Sub
-----------

результат: 31.03.2004


теперь наберем в дебаг-виндоу:


?Format("31.03.2004", "MM/DD/YYYY")
---------

03.31.2004


Т.е. в первом случае функция возвращает дату непреобразованной к амер. стандарту, во втором, ту же самую дату - преобразовывает в mm/dd/yyyy.

WinXP, АксессХР, MDAC 2.7

За ссылки (не на.. очень далеко) - буду признателен.
6 апр 04, 11:56    [614119]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа?  [new]
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 5006
TmpDate - это тип данных:ДАТА. Дата тебе и возращается, согласно региональным настройкам Виндоуса.
6 апр 04, 12:00    [614133]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Медведь, это у тебя глюки
Dim TmpDate As Date

Сделай
Dim TmpDate As String
или
Debug.Print Format(TmpDate, "MM/DD/YYYY")
и не парься.
6 апр 04, 12:01    [614139]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
апаздал
6 апр 04, 12:01    [614142]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа?  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Между прочим, когда пишешь
Format("31.03.2004", "MM/DD/YYYY")
то "31.03.2004" тоже будет понято по-разному в зависимости от настроек.
6 апр 04, 13:21    [614355]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Неужели как 2004-е число 31-го месяца 3-го года???
6 апр 04, 13:33    [614378]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа?  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Я рассматривал общий случай. :^)
6 апр 04, 13:34    [614380]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Большой Жирный Медведь
Member

Откуда: Иркутск
Сообщений: 31
Спасибо за наводящие ответы :)

Если не затруднит - каковы стандарты даты в SQL в Access?
Дата должна быть представлена обязательно в амер. стандарте в случае динамического формирования SQL-строки
(понятно, что в построителе запросов такой проблемы нет)?
Столкнулся со сл. ситуацией (выбираем некоторые данные за нужный месяц):


....
WHERE
T.PeriodEndDate Between #01/03/2004# And #31/03/2004#


Как думаете, за какой период возвращаюстя данные в рекордсет?
С 3-го января по 31-е марта.
Т.е. первая дата интерпретируется как амер. стандарт, вторая, ясный пень, как русский.
И где, спрашивается, региональные настройки даты?

Приходится, пока, делать так:
....
WHERE
T.PeriodEndDate Between #03/01/2004# And #31/03/2004#

Тогда данные получишь за нужный месяц.
Разве это правильно?
А если я буду поставлять дату в SQL в амер. формате - ведь там тоже могут
возникнуть разночтения: 31/03/2004 - трудно интрепретировать как 3 число
31-го месяца. А, например, 10/03/2004 - и так и этак.
Как она будет каждый раз пониматься при выполнении SQL - для меня
вопрос пока темный.
Посоветуйте чего-нибудь
7 апр 04, 04:22    [615711]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Большой Жирный Медведь
Member

Откуда: Иркутск
Сообщений: 31
Вы еще спите, а в Сибири уже жизнь вовсю кипит...
Сам себе посоветую.
В динамический SQL надо подставлять дату в американском формате.

Еще раз спасибо за понимание мого непонимания.
7 апр 04, 05:00    [615721]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Alexander G
Member

Откуда: Чукчи мы, однако
Сообщений: 3270
Торопливый, однако...
7 апр 04, 06:02    [615734]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Большой Жирный Медведь
Member

Откуда: Иркутск
Сообщений: 31
Alexander G
Торопливый, однако...

Дк. Проспи всю зиму...
7 апр 04, 06:27    [615739]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
В командах SQL в Аксессе даты идут по американскому формату. Поэтому 01/03/2004 - это 3 января. Однако если то, что написано, не укладывается в американский формат, например 31/03/2004, то Аксесс начинает гадать и пытаться понять это как-нибудь по-другому. Полагаться на это не нужно, нужно писать по американскому формату.
7 апр 04, 19:41    [617472]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Темный
Member

Откуда:
Сообщений: 11941
А еще лучше явно преобразовывать их в ентот самый стандарт. Дабы спалось спокойнее
7 апр 04, 19:56    [617489]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Большой Жирный Медведь
Member

Откуда: Иркутск
Сообщений: 31
Темный
А еще лучше явно преобразовывать их в ентот самый стандарт. Дабы спалось спокойнее
:))

Я так теперь и делаю - в SQL-строку подставляется строка, сформатированная под амер. дату.
...

DateEnd$ = Format(TmpDate, "MM/DD/YYYY")
DateEnd$ = "#" & Replace(DateEnd$, ".", "/") & "#"

SQL = Replace(SQL, "#1#", DateBegin$)
SQL = Replace(SQL, "#2#", DateEnd$)
8 апр 04, 03:48    [617656]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Alexander G
Member

Откуда: Чукчи мы, однако
Сообщений: 3270
По этому поводу лучше было сразу прочитать FAQ
8 апр 04, 03:59    [617660]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Большой Жирный Медведь
Member

Откуда: Иркутск
Сообщений: 31
2Alexander G
Икскьюз ми, конечно. В первом топике я об этом и просил.
На самом деле меня дополнительно интересовало - как люди относятся к тому, что Access "изменяет" сам себе - интерпретирует в SQL одну дату так, другую этак.
Если ты (MsJet) в амерском формате обрабатываешь дату - так в нем и обрабатывай, нефиг умничать и втихомолку подставлять другую! Лучше сругайся на несоответствующий формат даты - это будет вернее. Все равно, что мерить что-л. целыми метрами и встретив цифру 0,2 заменить ее целыми попугаями.
8 апр 04, 04:43    [617669]     Ответить | Цитировать Сообщить модератору
 Re: У кого это глюки - у меня от весны или у моего компа? (о формате дат)  [new]
Alexander G
Member

Откуда: Чукчи мы, однако
Сообщений: 3270
Лично я плохо отношусь. Но не можешь изменить обстоятельства - приходится привыкать.
8 апр 04, 05:51    [617679]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить