2015-01-07 4 views
0

Здравствуйте, я использую MS JET OLEDB 4.0 на VBA (MS ACCESS)Как отформатировать дату в SQL-запросе?

SQL = "SELECT COUNT(Date) FROM [Orders] WHERE [Orders].[Date] BETWEEN " & "#" & StartDate & "#" & " AND " & "#" & EndDate & "#" 

[Дата] отформатирован как й дд/мм/гггг (французский) и StartDate и EndDate отформатированы как мм/dd/yyyy (Два объекта даты).

Я считаю, что BETWEEN сравнивает только даты, отформатированные в мм/дд/гггг, так что есть способ, как функция для преобразования форматирования [Date] в mm/dd/yyyy, чтобы между функциями могла сравниться правильно?

Edit: Используя строку вместо дат, как следующие:

StartDateFormatted = Format(StartDate,"dd/mm/yyyy") 
EndDateFormatted = Format(EndDate,"dd/mm/yyyy") 

Так, чтобы быть уверенным в StartDate и ENDDATE формате. Он не работает. дд

  • либо между onlys сопостовительное мм/дд/гггг форматы

  • я должен использовать функцию форматирования [Date] в мм /:

    Я оставил предположить две вещи/yyyy

Спасибо @Maciej Los за ответ на мой вопрос.

+0

Не знаю, если это помогает, но нашел кусок документ о функции новообращенного: т.е. формат (сейчас, «ММ/дд/гггг») https://www.udemy.com/blog/vba-format-date/ – Robert

+0

:/Я читал это некоторое время назад! –

+0

Однако, поскольку столбцы должны быть полями даты, формат не должен влиять на сравнение, или я ошибаюсь !? Возможно ли, что '[Заказы]. [Дата]' имеет другой тип (может быть, текст)? – Robert

ответ

1

Использование Format function.

SQL = "SELECT COUNT(Date)" & vbcr & _ 
"FROM [Orders]" & vbcr & _ 
"WHERE [Orders].[Date] BETWEEN #Format(" & StartDate & "], 'MM/dd/yyyy')# AND #Format(" & EndDate & ",'MM/dd/yyyy')#" 
+0

Я не могу это использовать. У VBA есть проблемы. Можете ли вы отформатировать его? –

+0

попробуйте 'между #" и Format ([StartDate], "MM/dd/yyyy") & "# AND #" & Format ([EndDate], "MM/dd/yyyy") & "#" ' –

+1

Спасибо миллион! –

2

Всегда используйте форматирование даты ISO YYYY-MM-DD, и у вас не будет проблем. Без форматирования.

1

Я заметил из компиляции SQL запроса при использовании Между, что он превращает его в MM/DD/YYYY, и это не сработало, пока я не использовал Format (startdate, "mm/dd/yyyy"). Проверьте фотоаппарат.

enter image description here