Mirth Connect SQL Server Error : Conversion failed when converting date and/or time from character string

Mirth Connect SQL Server Error : Conversion failed when converting date and/or time from character string

我正在尝试插入 SQL 服务器日期时间字段。尝试一个 table 的简单场景,仅具有名为 start_date 的日期时间列。

我正在尝试的查询是

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

start_date 是 java.util.Date 类型的 channelMap 变量,创建时使用:

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

这里的start_date是java.util.Date的,为什么mirth在尝试插入数据库的时候把它当作字符串处理??

我相信您的数据是作为 '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.Datatype我的数据库是 DateTime 类型。

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

您甚至可以在 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);
}