在Node.js中为IBM DB2 iSeries将Julian日期转换为正常日期

时间:2016-11-22 09:30:12

标签: javascript node.js db2 apigee

在我的一个应用程序开发中,我使用的是IBM DB2 iSeries数据库,它与Progress with db2.jar给出的DataDirect技术相关联。在数据库中,存储为7位Julian格式的日期,我必须在正常日期转换为Node.js中的时间戳作为我的数据层已经在必须在Apigee上部署的Node.js中实现。 我需要一个通用的解决方案,可以在SQL查询级别和Node.js中将此julian日期转换为正常日期

Julian日期的例子是1160920,这对应于2016-09-20。

1 个答案:

答案 0 :(得分:4)

经过大量调查后,我在SQL级别以及node.js级别提供了解决方案。

要使用SQL查询将7位Julian日期转换为正常日期,您可以使用以下查询来查找IBM DB2 iSeries数据库 -

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

要使用node.js执行相同的转换,请使用下面的代码,它将完美转换

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());