2014-02-18 1 views
0

Я работаю над базой данных Northwind Microsoft Access в Acceess 2007. В таблице Orders есть три поля даты: OrderDate, RequiredDate и ShippedDate.Как добавить время (годы) к столбцу даты в таблице

Все эти поля находятся в 1994-1996 годах. Я пытаюсь ввести это в систему ETL, но эта система не позволяет датировать более 15 лет.

Я хотел бы добавить 10 лет к каждому из этих трех полей.

Я пытаюсь что-то вроде этого: UPDATE Заказы набор OrderDate = DateAdd ("гггг", 10, OrderDate)

... но получаю ошибку "Слишком мало параметров Ожидаемые 1.". Когда я вижу эту ошибку, обычно это опечатка в имени столбца, но я не вижу ее здесь нигде. Какие-либо предложения?

+0

Вы пробовали 'UPDATE Orders set OrderDate = DateAdd (" yyyy ", 10, [OrderDate])' ... – bhs

+0

Спасибо @bhs. Я просто попробовал это, но все равно получаю ту же ошибку. – Phoenix14830

+0

Синтаксис подходит для того, что вы опубликовали, есть ли еще ваш запрос, который вы еще не опубликовали? – GarethD

ответ

0

В итоге я вступил в Create, а затем Query Design. Там лента теперь показала Design как вкладку. Я нажал кнопку «Обновить», затем просмотрел SQL и вставил его, а затем переключился на представление дизайна. После сохранения запроса я попытался запустить его, и он не удалось из-за какой-либо функции безопасности, которая была отключена. Я включил его и обновил базу данных в порядке. Это в конечном итоге делает это:

UPDATE Orders SET RequiredDate = DateAdd("yyyy",10,RequiredDate); 
UPDATE Orders SET OrderDate = DateAdd("yyyy",10,OrderDate); 
UPDATE Orders SET ShippedDate = DateAdd("yyyy",10,ShippedDate); 

Спасибо всем за вашу помощь.

-2

Вместо DATEADD ("гггг", 10, OrderDate)

Сделать DATEADD (год, 10, OrderDate)

+0

Спасибо. Я попробовал это и все еще получаю «Слишком мало параметров». Ожидаемый 1. « ошибка. Синтаксис DateAdd, который я использовал, был: http://www.techonthenet.com/access/functions/date/dateadd.php – Phoenix14830

+0

Хорошо, я думаю о SQL. Комментарий от bhs в вашем исходном сообщении должен работать тогда. – JGow

+1

-1 Этот ответ не применим для Access SQL. –

2

Проблема, безусловно, не из-за синтаксической ошибки с DateAdd. В этом примере окна Immediate показано, что ваш синтаксис DateAdd действителен.

? DateAdd("yyyy",10,Date()) 
2/18/2024 

И он будет работать одинаково в коде VBA или в запросе.

Опасайтесь, что поле доступа может иметь как имя, так и подпись Недвижимость.

field properties showing name and caption

Если поле имеет заголовок, назначенный, что подпись используется вместо имени поля во многих ситуациях. Одна из таких ситуаций заключается в том, что вы открываете таблицу непосредственно в представлении Datasheet.

Так что в вашей ситуации таблица может содержать поле, подпись которого составляет «OrderDate», но фактическое название поля - это что-то еще. И в запросе вы должны использовать это имя, потому что Access не будет распознавать заголовок, предположим, что он должен быть параметром, и ожидайте, что вы укажете значение для параметра.

Проверьте дизайн таблицы, чтобы убедиться, что вы используете фактическое имя поля в запросе.

Вы можете избежать этой проблемы, построив свой запрос в конструкторе запросов Access. Запустите его как запрос SELECT и выберите из доступных имен полей. После того, как вы будете правильно работать как SELECT, вы можете конвертировать его в UPDATE, который вам действительно нужен.

Доступ предлагает удобные функции ручного удержания. Время от времени они получают его и становятся раздражающими. Но это случай, когда полезные «удобства» доступа могут быть действительно полезными. :-)

Оказывается, у меня есть экземпляр Northwind from Access 2007. По крайней мере, в моей копии это поле называется «Дата заказа». Так что подпись не была виновницей. Просто скопируйте имя поля, чтобы Access распознал его как «одну вещь» вместо двух.

UPDATE Orders 
SET [Order Date] = DateAdd("yyyy",10,[Order Date]); 

Обратите внимание, что это еще один пример проблемы, которую может помочь разработчик запросов.

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

  • Нет связанных вопросов^_^