Compare two date fields & calculate days between the two?

Edwin Fuller
Tera Guru

I have a field called "Original Expected Completion Date" that is populated automatically when another field called "Expected Completion Date" is filled in by a user. I need to capture the number of days it took to populate the field by comparing the "Created" date field with the "Updated" date field. I already have a business rule script running on the "Expected Completion Date" field as well.

Any thoughts of how I could accomplish this, example scripts would be great.

Thanks,

Edwin

1 ACCEPTED SOLUTION

My bad.   Here you go. This is how you set a duration field.



Script:


var gdt1 = new GlideDateTime(current.sys_created_on.getDisplayValue());


var gdt2 = new GlideDateTime(gs.nowDateTime());


var dur = GlideDateTime.subtract(gdt1, gdt2); //the difference between gdt1 and gdt2


var dur1= new GlideDuration();


dur1.setValue(dur.getValue());


current.<name of duration field>=dur1.getDurationValue();


View solution in original post

10 REPLIES 10

Rahul Kathuria
Tera Expert

Hi Edwin, I could not understand the requirement here. Could you please elaborate.


However you can go through this thread which might help..


https://community.servicenow.com/thread/166041




Thanks


Rahul Kathuria




Please mark the answer correct if this helps***


Abhinay Erra
Giga Sage

When should the clock stop in your case? What do you mean by updated field?


The clock should stop as soon as the "Original Expected Completion Date" is filled in. Once filled in the "sys_updated_on" field and "Create" field would be compared to get the number of days between the two.



find_real_file.png


Abhinay Erra
Giga Sage

Write a before business rule


when: before insert and update


Conditions: Original Expected Completion Date" changes AND Original Expected Completion Date" is not empty


Script:


var gdt1 = new GlideDateTime(current.sys_created_on.getDisplayValue());


var gdt2 = new GlideDateTime(gs.nowDateTime());


var dur = new GlideDuration();


var dur = GlideDateTime.subtract(gdt1, gdt2); //the difference between gdt1 and gdt2


gs.print(dur.getDisplayValue());   //this will give you the difference in days and hours