2015-06-16 3 views
-4

У меня есть поле, которое содержит дату в нем, и мне нужно удалить даты, возраст которых составляет 2 года, так что если дата в поле - 6/16/2014 в удалите его, 6/16/2013 сохранит его. Является ли это возможным?Удалить по дате В Access

+0

Как вы хотите это сделать? Запрос, vba? –

+0

Но 6/16/2013 - два года, и вы оба удалите его и сохраните ... невозможно. – Gustav

+0

Я хотел быть запросом, мне нужно удалить записи, которые имеют дату в поле даты (формат: мм/дд/гггг), который меньше года. Так что если дата в 6/16/214 удалит его и все после, а 6/15/2014 и под нее сохранят. – Amiaki

ответ

0

SQL-запрос, подобный этому, должен делать трюк, удаляя что-либо 6/17/2013 или после (что, я думаю, это то, что вы искали).

DELETE FROM MyTableName WHERE MyDateField >= #6/17/2013# 

Я считаю, что безопаснее использовать >= #6/17/2013#, а не > #6/16/2013#, так как часто с указанием даты без времени означает, что день в полночь, так что все, что произошло после полуночи на 6/16 до сих пор считается «после» и получает удален.

Кроме того, вы можете захотеть сделать копию своего файла .mdb, прежде чем приступать к массовому удалению, на всякий случай. :-)

Для дальнейшего чтения, ознакомьтесь с Office.com: Access SQL: basic concepts, vocabulary, and syntax


EDIT: Чтобы автоматически использовать текущую дату минус 2 года, запрос стал бы

DELETE FROM MyTableName WHERE MyDateField > DATEADD("yyyy", -2, DATE()) 

Конечно, мощь также удалять события 6/16/2013 и после, а не 6/17/2013 и после. Если это проблема, вы можете настроить ее с помощью вложенных операторов DATEADD, один для вычитания 2 лет и один для добавления дня.

FMI: Access DATEADD() Function

+0

Если есть способ сообщить Access, что является сегодняшней датой с функцией и идти оттуда, вместо того, чтобы вручную вводить запрос? – Amiaki

Смежные вопросы