MS Access SQL - сравнить общую дату с короткой датой - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно сравнить 2 разных типа даты ( Общая дата & Короткая дата ).

Я пытался использовать FORMAT () чтобы получить конвертированную дату, но вы не можете использовать ее в предложении WHERE.

"SELECT DT, Item, N, InvoiceNum, FORMAT(DT, 'Short Date') as DT_SD FROM itemHistory WHERE DT_SD='#" & selectedDate & "#')"

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вы всегда должны обрабатывать даты как даты, а не как текст.

Для Access SQL вам придется использовать правильно отформатированное строковое выражение для значений даты:

"SELECT DT, Item, N, InvoiceNum FROM itemHistory WHERE DateDiff('d', DT, #" & Format(selectedDate, "yyyy\/mm\/dd") & "#) = 0"

Если DT никогда не содержит значение времени , его можно уменьшить до:

"SELECT DT, Item, N, InvoiceNum FROM itemHistory WHERE DT = #" & Format(selectedDate, "yyyy\/mm\/dd") & "#"

Это будет работать быстрее, если у вас есть индекс для поля DT.

0 голосов
/ 17 октября 2018

Вы не можете использовать псевдоним в вашем местоположении, потому что ваш псевдоним используется в вашем выборе.Если вы не заключили в подзапрос

Причина:

Где: условия оцениваются и строки, которые не совпадают, удаляются

Таким образом, ваш whereСкажите, как ваш ряд не ваш псевдоним.Вместо этого используйте полное выражение, как указано @ Rene.

"SELECT DT, Item, N, InvoiceNum FROM itemHistory 
WHERE FORMAT(DT, 'Short Date') = #" & selectedDate & "#)"
...