Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

GlideDateTime gives weared result

Community Alums
Not applicable

Hello Friends,

I am getting some weird value in GlideDateTime query.
When I am viewing the list view, the duration filed is showing correct value. But while we are pulling the data of that specific field in the reports, we can see a weird result.

Script:

After Insert, update Business rule

(function executeRule(current, previous /*null when async*/ ) {

var inc = new GlideRecord('sysapproval_approver');
inc.addQuery('sys_id', current.sys_id);
inc.query();
if (inc.next()) {
var start = new GlideDateTime(inc.sys_created_on);
var end = new GlideDateTime(inc.u_approved_on);
var dur = GlideDateTime.subtract(start, end); //the difference between gdt1 and gdt2
gs.info(dur.getDisplayValue());
inc.u_duration = dur;
inc.update();
}
}
)(current, previous);

 

While seeing in the list view, I can see correct value. But when I am trying to pull the data in the report, I am seeing some weired result.

Screenshot is attached.

 

Duration type field: Duration

Report type: Multipivot

Someone please help to identify the issue.

Regards,

Rajesh

1 REPLY 1

Deepak Shaerma
Kilo Sage
Kilo Sage

Hi @Community Alums 

 

 Potential Issues in Your Script

1. Assignment of Duration to Field Means.... You calculated the duration by subtracting one GlideDateTime object from another, which gives you a duration. However, assigning this directly to a field (inc.u_duration = dur;) expects the duration to be in a specific format. Without converting dur to a proper duration format (seconds), you might end up setting an unexpected value in the duration field.

2. Duration Format.....>The result from GlideDateTime.subtract() needs to be formatted appropriately before being assigned to a duration field. This formatting requires converting the duration to seconds (or another appropriate unit of measurement that the duration field expects).

 

var inc = new GlideRecord('sysapproval_approver');
    inc.addQuery('sys_id', current.sys_id);
    inc.query();
    if (inc.next()) {
        var start = new GlideDateTime(inc.sys_created_on);
        var end = new GlideDateTime(inc.u_approved_on);
        var dur = GlideDateTime.subtract(start, end); //the difference between start and end
        var durationInSeconds = dur.getNumericValue(); // Get duration in milliseconds
        durationInSeconds = durationInSeconds / 1000; // Convert milliseconds to seconds
        gs.info(dur.getDisplayValue());
        inc.u_duration = durationInSeconds; // Assign duration in seconds
        inc.update();
    }

 


Note: Please Mark this Helpful and Accepted Solution. If this Helps you to understand. This will help both the community and me..
- Keep Learning ‌‌
Thanks & Regards 
Deepak Sharma