2016-11-17 11 views
1

SQL Server DateTimeフィールドに挿入しようとしています。 start_dateという名前のdatetime列を持つ1つの表の単純なシナリオを試してみましょう。私がしようとしていますMirth Connect SQL Serverエラー:文字列から日付および/または時刻を変換するときに変換に失敗しました。

クエリは

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はデータベースに挿入しようとすると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); 
} 

Out in DBは以下の通りです。

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

第二のアプローチ

あなたはまだあなたはまだJavaの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のを使用したい場合。以下を試してください。 – callmeonnet

+0

まだutilを使用したい場合は、以下を試してください var start_date = msg ['PID'] ['PID.7'] ['PID.7.1']。toString(); // 19831123 - YYYYMMDDフォーマット /* 入力YYYYMMDDと 出力はYYYYMMDDHHMMSSフォーマット */ VAR日付ストリング= DateUtil.convertDate( 'YYYYMMDD'、 'YYYYMMDDHHMMSS'、START_DATE)です。 { sql = "INSERT INTOテスト(開始日)の値( '" + 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'とDBに挿入されていると思います。

Iのは、FormatDate関数を使用するが、DBに挿入されたデータをDBに挿入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+"')"); 

Iは、dB値内部、として日付値を送信してい1968-02-19 09:25:16。私のDBのデータ型はDateTime型です。

getDate機能はjava.util.Dateオブジェクトを返し、私はgetCurrentDate機能を試みたとき、それはフォーマットされた文字列を返します。私は日付オブジェクトのフォーマットは、DBにデータを挿入する1つの方法だと思います。