使用 javascript 将 SQL 日期数字转换为日期
Convert SQL date number into date using javascript
Gabriele Petrioli 请在关闭之前阅读我的问题。
我在 SQL 中的报告是每天的,并且作为日期的 INT 是完美的,两年前我测试了 Azure CosmosDB 并且我能够使用 JavaScript 进行转换我使用 UDF 完成了我现在刚好需要一个项目,运气不好,不敢相信有这么多人在没有编程技能的情况下淡化问题和管理,"managing",我会再做一次我不会放弃,但我今天需要代码.
如果管理员没有再次关闭我的问题,我将 post 解决方案。
这里是原问题:
我需要将 SQL 生成的 INT 日期转换为使用 javascript 的日期。
我知道这是可能的,我在今天糟糕的一天之前就做到了,时间紧迫。
过程如下:
我使用 SQL
将日期转换为 INT
select 'cast(getdate() as int)'
select cast(getdate() as int)
-- today 43811
我需要使用 Javascript 将其取回。没有Jquery 否则。
--more exaples
select 'cast(40702 as smalldatetime)'
select cast(40702 as smalldatetime)
--output 2011-06-10 00:00:00
select 'cast(getdate() as float)'
select cast(getdate() as float)
-- output 43810.6597960262
我再次需要使用 JavaScript
convert2date(40702) --> 2011-06-10
convert2date(43811) --> 2019-12-14
您拥有的是从 1900-01-01 开始的天数,您需要添加给定的天数。
function convert2date(days) {
const
isLeapYear = year => (!(year % 4) && !!(year % 100)) || !(year % 400),
daysInMonth = (month, year) => [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1] + isLeapYear(year);
var date = [1900, 1, 1],
y = isLeapYear(date[0]) + 365,
d;
while (days >= y) {
date[0]++;
days -= y;
y = isLeapYear(date[0]) + 365;
}
d = daysInMonth(date[1], date[0]);
while (days >= d) {
date[1]++;
days -= d;
d = daysInMonth(date[1], date[0]);
}
date[2] += days;
return date.map((v, i) => v.toString().padStart(i ? 2 : 4, 0)).join('-');
}
console.log(convert2date(40702)); // 2011-06-10
console.log(convert2date(43811)); // 2019-12-14
Gabriele Petrioli 请在关闭之前阅读我的问题。
我在 SQL 中的报告是每天的,并且作为日期的 INT 是完美的,两年前我测试了 Azure CosmosDB 并且我能够使用 JavaScript 进行转换我使用 UDF 完成了我现在刚好需要一个项目,运气不好,不敢相信有这么多人在没有编程技能的情况下淡化问题和管理,"managing",我会再做一次我不会放弃,但我今天需要代码. 如果管理员没有再次关闭我的问题,我将 post 解决方案。
这里是原问题:
我需要将 SQL 生成的 INT 日期转换为使用 javascript 的日期。
我知道这是可能的,我在今天糟糕的一天之前就做到了,时间紧迫。
过程如下: 我使用 SQL
将日期转换为 INTselect 'cast(getdate() as int)'
select cast(getdate() as int)
-- today 43811
我需要使用 Javascript 将其取回。没有Jquery 否则。
--more exaples
select 'cast(40702 as smalldatetime)'
select cast(40702 as smalldatetime)
--output 2011-06-10 00:00:00
select 'cast(getdate() as float)'
select cast(getdate() as float)
-- output 43810.6597960262
我再次需要使用 JavaScript
convert2date(40702) --> 2011-06-10
convert2date(43811) --> 2019-12-14
您拥有的是从 1900-01-01 开始的天数,您需要添加给定的天数。
function convert2date(days) {
const
isLeapYear = year => (!(year % 4) && !!(year % 100)) || !(year % 400),
daysInMonth = (month, year) => [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1] + isLeapYear(year);
var date = [1900, 1, 1],
y = isLeapYear(date[0]) + 365,
d;
while (days >= y) {
date[0]++;
days -= y;
y = isLeapYear(date[0]) + 365;
}
d = daysInMonth(date[1], date[0]);
while (days >= d) {
date[1]++;
days -= d;
d = daysInMonth(date[1], date[0]);
}
date[2] += days;
return date.map((v, i) => v.toString().padStart(i ? 2 : 4, 0)).join('-');
}
console.log(convert2date(40702)); // 2011-06-10
console.log(convert2date(43811)); // 2019-12-14