-1

Gabriele Petrioli please read my question before you close it.

my reports in SQL are daily, and INT as Date is perfect, two years ago I test Azure CosmosDB and I was able to convert by using JavaScript I did it by using UDF I just needed now for a project and bad luck, can't believe so many people are involved to downplay questions and administrating without programming skills and "managing", I will do it again I will not give up but I need the code today. I will post the solution if the managers did not close my question again.

here the original question:

I need to convert INT date produced by SQL into a Date using javascript.

I know this is possible I did it before I have a terrible day today and the time is clicking.

Here is the process: I convert the date to INT using SQL

select 'cast(getdate() as  int)'
select cast(getdate()  as  int)
-- today 43811

I need to bring it back using Javascript. No Jquery or else.

--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

Again I need to use JavaScript
convert2date(40702) --> 2011-06-10

convert2date(43811) --> 2019-12-14

4

1 回答 1

1

What you have is a day count from 1900-01-01 and you need to add the given days.

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

于 2019-12-14T17:22:01.930 回答