2016-11-17 4 views
1

Я пытаюсь вставить в поле DateTime SQL Server. Попытка простого сценария одной таблицы с столбцом datetime с именем start_date.Ошибка в Mirth Connect SQL Server: при преобразовании даты и/или времени из символьной строки произошла ошибка преобразования

запросов Я пытаюсь это

INSERT INTO test (start_date) values (${start_date}) 

start_date является ChannelMap переменного типа java.util.Date, он был создан с помощью:

var start_date = DateUtil.getDate('yyyyMMddHHmmss', msg['date'].toString()); 

Здесь start_date имеет java.util.Date, почему веселье относится к нему как к String, когда пытается вставить в базу данных?

ответ

3

Вы можете обрабатывать преобразование даже в SQL. Надеюсь, это поможет.

var start_date = msg['PID']['PID.7']['PID.7.1'].toString(); // 19831123 - YYYYMMDD format 
try { 
    sql="INSERT INTO test (start_date) values (convert(datetime,'" + start_date + "',5))"; 
    logger.info(sql); 
    rst = dbConn.executeUpdate(sql); 
} 
catch(err) { 
    logger.info('ERR: ' + err); 
} 

В БД будет ниже.

select * from test 
start_date | 
---------- 
1983-11-23 00:00:00.000 

второй подход

Если вы все еще хотите использовать Util попробовать ниже

var start_date = msg['PID']['PID.7']['PID.7.1'].toString(); // 19831123 - YYYYMMDD format 
/* 
Input is yyyyMMdd and 
output is yyyyMMddHHmmss format 
*/ 
var datestring = DateUtil.convertDate('yyyyMMdd', 'yyyyMMddHHmmss', start_date); 
try { 
    sql="INSERT INTO test (start_date) values ('" + start_date + "')"; 
    logger.info(sql); 
    rst = dbConn.executeUpdate(sql); 
} 
catch(err) { 
    logger.info('ERR: ' + err); 
} 
+0

Если вы все еще хотите использовать функции UTIL Java. Попробуйте ниже. – callmeonnet

+0

Если вы все еще хотите использовать утилиту, попробуйте ниже var start_date = msg ['PID'] ['PID.7'] ['PID.7.1']. ToString(); // 19831123 - формат ГГГГММДД /* вход ггггммдд и выход Формат ГГГГММДДччммсс */ вар DateString = DateUtil.convertDate ('YYYYMMDD', 'ГГГГММДДччммсс', дата_начала); try { sql = "INSERT INTO test (start_date) значения ('" + start_date + "')"; logger.info (sql); rst = dbConn.executeUpdate (sql); } catch (err) { logger.info ('ERR:' + err); } – callmeonnet

+1

Первый подход работал для меня! –

0

Я считаю, что ваши данные вставляются в БД как 'Mon Feb 19 09:25:16 IST 1968' вместе с кавычками.

Я использовал FormatDate функцию, но данные, вставленные в БД будет как 1968-02-19 09:25:16

var pidDate = msg['PID']['PID.7']['PID.7.1'].toString(); 
var value = DateUtil.getDate("yyyyMMddHHmmss",pidDate); 
var data = DateUtil.formatDate("yyyyMMddHHmmss", value) 
channelMap.put("start_date",data); 

Вставка к БД:

var dateValue = $('start_date') 
    dbConn = DatabaseConnectionFactory.createDatabaseConnection(dbDriver, dbAddress, userName,passwd); 
    result = dbConn.executeUpdate("INSERT INTO test (startdate) values ('"+dateValue+"')"); 

Я значение даты отправки, как , внутри значения DB is 1968-02-19 09:25:16. Тип моей базы данных - тип DateTime.

функция getDate возвращает java.util.Date объект, но когда я попытался с getCurrentDate функции, она возвращает отформатированную строку. Я предполагаю, что форматирование объекта даты является одним из способов вставки данных в БД.

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

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