Парадокс: запросить столбец Date + столбец Time как DateTime

Во-первых, я новичок в Paradox.
Во-вторых, я запрашиваю базу данных стороннего программного пакета и не могу изменить схему.

У меня есть два поля с простыми именами «Дата» и «Время», которые я хотел бы запросить как DateTime (из моего опыта работы с MS SQL).

Это возможно?

Я пробовал несколько запросов, и когда команда действительна, я получаю «Несоответствие типа данных в выражении критериев».

Кроме того, это будет из базы данных Paradox примерно с 1999 по 2000 год, если это имеет значение.

РЕДАКТИРОВАТЬ: даже простая конкатенация строк полей очень помогла бы, потому что я мог бы справиться с этим в коде.

РЕДАКТИРОВАТЬ: В ответ на ответ a.i.breveleri. Я получаю это сообщение:

ОШИБКА [42000] [Microsoft] [Драйвер ODBC Paradox] Синтаксическая ошибка (отсутствует оператор) в выражении запроса 'CAST(m.DateComplete AS TIMESTAMP) - CAST([1/1/3000] AS TIMESTAMP) + CAST(m.TimeComplete AS TIMESTAMP)».

Когда я запускаю этот запрос:

select distinct 
  CAST(m.DateComplete AS TIMESTAMP) - 
  CAST("1/1/3000" AS TIMESTAMP) + 
  CAST(m.TimeComplete AS TIMESTAMP)
from Mean m 

person Austin Salonen    schedule 25.06.2009    source источник
comment
Вы пишете запрос QBE или запрос SQL? Каковы типы данных Paradox для столбцов Date и Time? -Ал.   -  person A. I. Breveleri    schedule 26.06.2009
comment
SQL-запрос; мое лучшее предположение о типах данных: Date - это столбец даты, а Time - строка.   -  person Austin Salonen    schedule 26.06.2009
comment
Извините за сумбурность, но вы используете Paradox для Windows для доступа к данным? Если нет, то как вы подключаетесь к базе данных Paradox? В других разделах SO указано, что подобный запрос может быть чувствителен к выбору драйвера ODBC. -Ал.   -  person A. I. Breveleri    schedule 26.06.2009


Ответы (2)


 SELECT CAST(f.DateColumn AS VARCHAR(20)) + ' ' + CAST(f.TimeColumn AS VARCHAR(20)) 
 FROM Foo f

Это дает вам конкатенированную строку.

 SELECT CAST(CAST(f.DateColumn AS VARCHAR(20)) + ' ' + CAST(f.TimeColumn AS VARCHAR(20)) AS TIMESTAMP) As FooTime
 FROM Foo f

дает вам объединенное время.

person Eugene Yokota    schedule 25.06.2009
comment
Я получаю сообщение об отсутствующей ошибке оператора при запуске..., cast(Date as varchar(20))... - person Austin Salonen; 26.06.2009
comment
Дата — это зарезервированное слово, поэтому вы можете захотеть заключить его в двойные кавычки. - person Eugene Yokota; 26.06.2009

QBE-запрос:

Query
ANSWER: :PRIV:ANSWER.DB

test.db | Date | Time                         | 
        | _x   | _y, calc _x+_y as "DateTime" | 

EndQuery

SQL-запрос:

SELECT DISTINCT
    CAST(D0."Date" AS TIMESTAMP) -
    CAST("1/1/3000" AS TIMESTAMP) +
    CAST(D0."Time" AS TIMESTAMP)
FROM 
    "test.db" D0

-Al.

person A. I. Breveleri    schedule 25.06.2009
comment
Я получаю синтаксическую ошибку при использовании SQL-запроса с драйвером MS ODBC. Я обновил свой вопрос. - person Austin Salonen; 26.06.2009
comment
Похоже, что драйвер базы данных рабочего стола Microsoft ODBC (вероятно, ODBCJT32.DLL) меняется с 1/1/3000 на [1/1/3000]. Попробуйте использовать одинарные кавычки «1/1/3000». Или вы можете проверить DataDirect Technologies (ранее Merant, производитель драйверов INTERSOLV ODBC) для поиска альтернативного драйвера. -Ал. - person A. I. Breveleri; 27.06.2009