Mirth Connect SQL Server错误:从字符串转换日期和/或时间时转换失败

时间:2016-11-17 16:21:35

标签: mirth

我正在尝试插入SQL Server DateTime字段。尝试仅使用名为start_date的datetime列的一个表的简单方案。

我正在尝试查询

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

start_date是Type java.util.Date的channelMap变量,它是使用:

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

这里start_date是java.util.Date,为什么mirth在尝试插入数据库时​​将其视为String?

2 个答案:

答案 0 :(得分: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);
}

DB中的输出将在下面。

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);
}

答案 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+"')");

我发送日期值为 19680219092516 ,内部数据库值 1968-02-19 09:25:16 。我的数据库的数据类型为DateTime类型。< / p>

getDate函数返回 java.util.Date 对象,但是当我尝试使用getCurrentDate函数时,它返回一个格式化的String。我想格式化日期对象是将数据插入数据库的一种方式。