Выбор даты запроса OpenOffice SQL

Я искал в Интернете и спрашивал, но, похоже, не нашел ответа на свою проблему...

У меня есть работающее соединение ODBC с моей базой данных FrontBase в OpenOffice Base. Мне удается выбрать все, что я хочу, но когда я хочу показать записи только между определенными датами или даже одной датой, я продолжаю получать семантическую ошибку.

Вот мой запрос:

SELECT * FROM "SALES" WHERE "DATE" = '2014-04-01'

На всякий случай, если вы предлагаете использовать # для даты, это тоже не работает.

DATE '2014-04-01' тоже неудачно :(

У кого-нибудь есть идеи?


person Community    schedule 01.04.2014    source источник
comment
Попробуйте использовать WHERE DATE ›= '2014-04-01' и тому подобное, чтобы устранить любые возможные проблемы с переходом на летнее время. Вы также должны сообщить об ошибке, которая возвращается.   -  person fredt    schedule 02.04.2014
comment
@fredt К сожалению, безуспешно. Я получаю следующую ошибку: Статус SQL: HY000 [FrontBase Inc.][FrontBase ODBC]Семантическая ошибка 217. Типы данных несопоставимы или не совпадают. Семантическая ошибка 485. Рядом: SELECT DISTINCT * FROM SALES WHERE DATE›='2014-04-01';. Семантическая ошибка 485. Около: '2014-04-01'. Исключение 363. Откат транзакции.   -  person    schedule 04.04.2014


Ответы (4)


После множества проб и ошибок я присмотрелся к интерфейсу OpenOfficeBase. Я был уверен, что в моем заявлении нет ничего плохого, поэтому в Базе должно быть что-то, что я упускаю.

На панели инструментов есть кнопка с SQL и галочкой "Выполнить SQL-команду немедленно". Думал, что не будет никакого вреда, если я включу его и попробую. И вот он, мой запрос с фильтром даты! Я понятия не имею, почему эта кнопка там или какова ее точная функция, но ее включение заставило мой запрос работать.

введите здесь описание изображения

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

person Community    schedule 29.07.2014

Здесь выстрел в темноте. Если вы используете базу данных FrontBase, погуглив «Frontbase select date range», вы получите следующую страницу: http://www.frontbase.com/documentation/LookSeeIntro-2.3.html

Там у них есть этот пример запроса:

SELECT
   receiver FROM memo_mails 
WHERE 
   sender = 'QA' AND 
   CAST(dateSent AS DATE) < DATE '2001-06-01' AND
   SATISFIES(quickx, 'Periscope & invoice');

Итак, основываясь на этом примере, я бы попробовал

SELECT
    * FROM "Sales"
WHERE
    (CAST("Sales"."SalesDate" AS DATE) >= DATE '2014-06-01') AND
    (CAST("Sales"."SalesDate" AS DATE) <= DATE '2014-06-30');
person Amedee Van Gasse    schedule 28.07.2014
comment
Я тоже нашел это во время своего квеста, но, поскольку он содержит DATE, я сразу получаю синтаксическую ошибку в выражении SQL. - person ; 28.07.2014

SELECT * FROM SALES WHERE DATE = '2014-04-01'

Вышеприведенное должно работать до тех пор, пока в столбце, из которого вы пытаетесь выбрать, нет времени. Какой тип данных столбца?

person user3485087    schedule 01.04.2014
comment
Это простой столбец даты без каких-либо отметок времени. Когда вы просматриваете таблицу, она отформатирована как 04.01.2014, но, конечно, это не работает и в запросе... - person ; 02.04.2014

Если вы все еще ищете ответы

SELECT * FROM "SALES" WHERE "DATE" = {D '2014-04-01'}

Кажется, нужно поставить букву D, чтобы обозначить, что это дата, а не строка/varchar. Я надеюсь, что это поможет, хотя вопросу уже 1 год.

person MrCzeal    schedule 29.02.2016