我正在尝试插入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?
答案 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。我想格式化日期对象是将数据插入数据库的一种方式。