• No : 25898
  • 公開日時 : 2016/10/25 11:24
  • 更新日時 : 2019/08/16 12:13
  • 印刷

【DataSpider Servista】 マイクロ秒を含む日時データをスクリプト変数にセットしたら値がミリ秒の単位に切り捨てられました

MySQL アダプタでマイクロ秒を含む日時データを取得しスクリプト変数にセットしたら、値がミリ秒の単位に切り捨てられました。原因と対処方法を教えてください。
カテゴリー : 

回答

■原因
 
DataSpider Servista で使用している Java の Date 型では、精度がミリ秒でデータを扱っています。このため、Date 型で換算した場合に、マイクロ秒部分が切り捨てられ、ミリ秒部分までが取得されています。
 
Date 型で換算されるケースは以下となります。
  • スクリプト変数に値を代入した場合
  • Mapperのロジックで取得した日時データを加工した場合
  • 「大容量データ処理」を有効にしている場合
※大容量データ処理では、取得した日時データを一時的にローカルにファイルで保持します。この場合に、取得した値が Date 型で換算されます。
 
■対処方法
  • 取得した日時データを加工せずに書き込む
MySQL アダプタでは、日時データをマイクロ秒まで読み取りまたは書き込みすることができます。このため、取得した日時データを加工せずに、そのまま登録する場合には、マイクロ秒部分の切り捨ては発生しません。
  • 日時データを文字列として扱う
日時データの変換やファイルへの書き込みが必要な場合には、マイクロ秒の値を文字列として取得してください。
 
たとえば、検索系SQL実行処理では以下のようなクエリを実行することで文字列としてデータを取得することができます。
 
SELECT DATE_FORMAT("column",'%Y-%m-%d %H:%i:%s.%f') FROM "TABLE";
 
■補足
 
MySQL アダプタ以外でマイクロ秒に対応しているアダプタについてはヘルプをご確認ください。
 
 
参考情報
 
・マイクロ秒のデータについて
 
目的別で検索
トラブルシューティング