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