Ошибка синтаксиса SQL с запросом ms-access - PullRequest
2 голосов
/ 12 сентября 2011

Вот мой запрос ниже.У меня проблема в том, что B.REVISED_DATE - это строка, а B.REVISED_DATE - дата, и когда я пытаюсь выполнить запрос, я получаю ошибку несоответствия данных.То, что я пытаюсь сделать, это изменить B.REVISED_DATE в строку, но я не помню точный синтаксис.Я использую Microsoft Access в качестве базы данных.Любая помощь будет оценена.

     SELECT A.ICAO, A.RWY, A.REVISED_DATE, B.REVISED_DATE
     FROM RUNWAYS A, RUNWAYS_UPDATABLE B, AIRPORT_CHECKLIST C
     WHERE A.RWYKEY = B.RWYKEY
     AND A.ICAO = C.ICAO
     AND A.REVISED_DATE <> B.REVISED_DATE
     AND TO_CHAR(B.REVISED_DATE) <> C.EMAIL_DATE
     ORDER BY A.ICAO

Ответы [ 2 ]

4 голосов
/ 13 сентября 2011

Access 'ядро базы данных не поддерживает функцию TO_CHAR.

Если B.REVISED_DATE имеет тип данных Date / Time, а C.EMAIL_DATE - текст, вы можете использовать CDate (), чтобы получить значение Date / Time из C.EMAIL_DATE.

B.REVISED_DATE <> CDate(C.EMAIL_DATE)

Если вы предпочитаете использовать текстовый эквивалент B.REVISED_DATE, вы можете использовать функцию CStr (). Однако, если он не отформатирован так же, как C.EMAIL_DATE, сравнение неравенства может быть проблематичным. Возможно, вам лучше использовать Format (), чтобы REVISED_DATE форматировался так же, как EMAIL_DATE

Format(B.REVISED_DATE, "mm/dd/yyyy") <> CDate(C.EMAIL_DATE)

Но мне кажется, что проще провести сравнение с обеими датами, поэтому вам не нужно беспокоиться о проблемах форматирования.

1 голос
/ 13 сентября 2011

Если вы хотите превратить B.Revised_Date в строку, используйте функцию Format ().

Format(B.Revised_Date, "Format of date here")

Формат преобразует вашу дату в любой формат, который вы хотели бы использовать, как показано здесь

Если вы хотите превратить B.Revised_Date в Date, используйте функцию CDate ().

CDate(B.Revised_Date)

Так что, если вы хотите, чтобы обе ваши даты были текстовыми, вы можете сделать что-то в этом духе.

AND Format(A.REVISED_DATE, "MM/dd/yyyy") <> Format(B.REVISED_DATE, "MM/dd/yyyy")

Или как хотите, чтобы даты были отформатированы.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...