2016-11-22 10 views
3

私のアプリケーション開発の1つでは、db2.jarでProgressによって与えられたDataDirectテクノロジーに接続されたIBM DB2 iSeriesデータベースを使用しています。データベースでは、私のデータレイヤーがApigeeにデプロイする必要があるNode.jsに実装されているため、Node.jsのタイムスタンプとして通常の日付に変換する必要がある7桁のジュリアン形式の日付が格納されています。 SQLクエリレベルとNode.jsでこのジュリアン日付を通常の日付に変換できる汎用ソリューションが必要ですIBM DB2 iSeriesのNode.jsでジュリアン日付を通常の日付に変換する

ユリウス日付の例は1160920です。これは2016-09-20に対応しています。

+0

Googleに最初に試しましたか? StackOverflowにはたくさんの答えがあります。検索を使用してください。 – Molda

+0

「ユリウス暦」の意味は問わず、1160920は2016年9月20日のグレゴリオ暦では対応できません。 – mustaccio

+1

これはユリウス暦の日付ではありません。CYYMMDDとして7桁しか格納されていない通常の日付です。 – Charles

答えて

4

多くの調査の後、私はSQLレベルとnode.jsレベルの両方のソリューションを提供しています。それは完全に変換されますのNode.jsを使用して同じ変換を実行するには

SELECT DATE(((1160920 /10000)+1900)|| '-' || 
(MOD(1160920 ,10000) /100)|| '-' || 
MOD(1160920 ,100)) 
FROM 
SYSIBM.SYSDUMMY1 

コードの下に使用

- あなたはIBM DB2 for iSeriesデータベースクエリの下に使用できるSQLクエリを使用して、通常の日に7桁のユリウス日付を変換するには

は、

var dateFormat = require('dateformat'); 
function julianIntToDate(n) { 

    var yy = ((n/10000)+1900); 
    var year = Math.floor(yy); 
    var mm = ((n % 10000)/100); 
    var mon = Math.floor(mm); 
    mon = leadingZero(mon); 
    var dd = (n % 100); 
    dd = leadingZero(dd); 
    console.log("Year--"+year); 
    console.log("Month--"+mon); 
    console.log("Day--"+dd); 

    var now = new Date(year+"-"+mon+"-"+dd); 
    console.log("Converted Date-->"+now); 
    orderDate = dateFormat(now, "yyyy-mm-dd'T'HH:mm:ss-0500"); 
    return (orderDate); 

    function leadingZero(value) { 
    if (value < 10) { 
    return "0" + value.toString(); 
    } 
    return value.toString(); 
    } 
} 
console.log("Julian Date--->"+1160920); 
console.log("Normal Date--->"+julianIntToDate(1160920).toString()); 
関連する問題