Trying to query a string, with date as value

a_g_rodriguez
Kilo Contributor

I am trying query a table i have which has date as a string. I am trying to use a value on a form to reference and get the correct date associated to a name

u_resource_start_date is a string in a table i have stored. However, u_start_date is a date field so when i run the business rule it is not grabbing the correct date and always defaults to a date.

Background- i have a table with projects(u_project) and i am getting the project on the form by using a gliderecord with the u_demand. I get   the correct project, but each project has a different start date hence a separate record for a different start   date.   So I want to use the date on the form that is a date field and use that to query the table for the date which is a string

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

  var gr = new GlideRecord ('u_adam_resource_test');

  gr.addQuery('u_project', current.getDisplayValue('u_demand_id') );

gr.addQuery('u_resource_start_date', current.getValue('u_start_date') );

  gr.query();

  if(gr.next()){

  current.setDisplayValue('u_form_test', gr.u_project);

  }

})(current, previous);

3 REPLIES 3

Mujtaba Amin Bh
Mega Guru

You should try converting the u_start_date to string(same format as u_resource_start_date) and then do a glide record.


Sounds like the start date of a project should be a glide_date. Maybe u_resource_start_date could instead be made a glide_date as well.


CapaJC
ServiceNow Employee
ServiceNow Employee

Are you querying for the same date format as you're using in your String field? e.g., both date and String show as "2017-05-30"?



When you do a gs.addInfoMessage on current.getValue("u_date"), what do you see compared to the String value you're searching for?



I just did a trivial test that worked as expected. I saved an Incident record w/ a populated glide_date field "u_date". I then put that same date (in the same date format!) in the Short description of two other Incidents (String field). I then grabbed my first record w/ a GlideRecord script, variable name "gr1".



Then I queried incident where short_description was gr1.getValue("u_date"), and I got the two records I wanted.



Here's my test script:



doit();


function doit() {


  var gr1 = new GlideRecord('incident');


  gr1.get("11b63e294f47f2008a959a211310c74a");


  gs.print("date I'm querying for is: " + gr1.getValue("u_date"));


 


  var gr2 = new GlideRecord('incident');


  gr2.addQuery("short_description", gr1.getValue("u_date"));


  gr2.query();


  while (gr2.next())


      gs.print("got one!");


}