2016-11-22 86 views
3

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

Julian日期的示例此Julian日期转换为正常的日期是1160920,这是对应于2016年9月20日。

+0

您是否尝试先谷歌它?在StackOverflow上有很多答案,只需使用搜索。 – Molda

+0

无论您是“Julian约会”的意思,1160920都不可能对应于Gregorian日历中的2016年9月20日。 – mustaccio

+1

这不是Julian日期,它是一个常规日期,只有7位数字存储为CYYMMDD。 – Charles

回答

4

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

要使用SQL查询,您可以使用下面的查询IBM DB2 iSeries数据库转换7位数的公历日期为正常日期 -

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