Days calculation in between two fields available on a form

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2023 05:59 AM
Hi,
I've a form where there are 2 fields as below:
1. Created (sys_created_on)
2. Closed (closed_at)
Both these fields contain date value.
I wanted the Age difference between these 2 fields and update it on another field called Ageing (u_ageing).
I've written a fix script as below to update the Aging field for few records:
var ag = new GlideRecord('sn_vul_vulnerable_item');
ag.addEncodedQuery('risk_rating=1^ORrisk_rating=2^state=3');
ag.query();
while (ag.next()) {
var created = new GlideDateTime(ag.sys_created_on);
var VIC = created.getDate(); //get only date from created date time
var closed = new GlideDateTime(ag.closed_at);
var closedate = closed.getDate(); //get only date from close date time
var dur = new GlideDateTime.subtract(closedate, VIC);
var duration = dur.getDisplayValue();
ag.setValue('u_ageing', duration);
ag.update();
}
However, in the aging field, the days are getting calculated as (Today's date - created date)... However, I'm looking for (Close date - Created date).
Where I'm doing wrong?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2023 06:54 AM
This script should work:
var ag = new GlideRecord('sn_vul_vulnerable_item');
ag.addEncodedQuery('risk_rating=1^ORrisk_rating=2^state=3');
ag.query();
while (ag.next()) {
var created = new GlideDuration();
created.setValue(ag.sys_created_on);
var closed = new GlideDuration();
closed.setValue(ag.closed_at);
var dur = closed.subtract(created);
var duration = dur.getDisplayValue();
ag.setValue('u_ageing', duration);
ag.update();
}