2015-12-21 2 views
1

Почему преобразование DATEIME в инструкции SELECT ниже создает синтаксическую ошибку SQL Server 210056? «act_start_dt» - тип DATE, отформатированный как «2015-01-01», а «act_start_tm» представляет собой целое число, представленное числом секунд с полуночи.DATETIME Функция в инструкции SELECT

Заявление отлично работает без вызова DATETIME.

SELECT TOP 100 
    act_start_dt, 
    act_start_tm, 
    DATETIME(act_start_dt, act_start_tm) 
FROM 
    PUB.MyTable; 

даты и времени столбцы определяются как:

act_start_dt[date(10) DEFAULT NULL] 
act_start_tm[integer(10) DEFAULT 0] 
+0

Вам нужно использовать временную метку для 'act_start_tm', а не только секунд с полуночи. –

ответ

0

DATETIME() функция ProgressDB, кажется, имеет метку времени в следующем формате в качестве входных данных:

2015-01-01 11:04:23 

Использование можно использовать функция STRING на столбцах act_start_dt и act_start_tm, чтобы получить нужный формат.

DATETIME(STRING(act_start_dt,"9999-99-99") + " " + STRING(act_start_tm,"HH:MM:SS")) 
+0

Спасибо, Тим, но это тоже не сработает. Такая же ошибка. Фактически, даже отдельные функции STRING дают ту же ошибку. –

+0

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

+0

Столбцы определяются как: act_start_dt [дата (10) DEFAULT NULL] act_start_tm [целое число (10) DEFAULT 0] Я также заметил, что что-то так просто, как DATETIME ("2015-05-05 7:23:15 ») все еще ошибки. Как будто система не распознает эти основные функции. Может ли быть, что требуемая библиотека функций не установлена ​​или не включена на сервере? –

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