2017-02-22 41 views
-2

У меня есть чтение Access из глобальной базы данных, и есть столбец, где даты представлены в формате YYYYMMDD, и я ищу код SQL, который позволяет мне фильтровать его между вчерашним и первым днем в текущем месяце (он не будет работать в первый день месяца, так что я не беспокоюсь о его нарушении там).Фильтрация даты в MS Access SQL

Например, я в настоящее время он работает с использованием кода: Между 20170201 и 20170221

Я хотел бы иметь его использовать код, который находится между [FIRST МЕСЯЦА] и [ВЧЕРА]

+1

Что вы подразумеваете под "Сортировка между двумя датами". Вы имеете в виду фильтр? Является ли это датой, хранящейся в виде текста, или просто фанкойным форматом даты в поле даты? – JNevill

+0

Фильтр, я считаю. Я хочу, чтобы он показывал транзакции, которые произошли между первым месяцем и предыдущим рабочим днем. Если я напишу «Между 20170201 и 20170221», он будет работать нормально, но мне нужно его автоматически обновлять с каждым днем. – mbald23

+0

«Между 20170201 и 20170221» подразумевает, что ваши данные хранятся как int, это правильно? В этом случае решением будет конвертировать даты (первый из текущего месяца и вчера) в этот формат. – Degan

ответ

1

Вы можете использовать:

Select * From YourTable 
Where YourDateField 
    Between DateSerial(Year(Date()), Month(Date()), 1) And DateAdd("d", -1, Date()) 

Если поле дата действительно текст, используйте:

Select * From YourTable 
Where DateValue(Format(YourDateField, "@@@@\/@@\/@@")) 
    Between DateSerial(Year(Date()), Month(Date()), 1) And DateAdd("d", -1, Date()) 

или:

Select * From YourTable 
Where YourDateField 
    Between Format(DateSerial(Year(Date()), Month(Date()), 1), "yyyymmdd") And Format(DateAdd("d", -1, Date()), "yyyymmdd") 

Если вы используете запрос PT, преобразовать в синтаксисе SQL двигателя.

+0

Спасибо! Это очень помогает. – mbald23