How to write a complex query~

tianhb
Giga Contributor

How to write a complex query�

now,I have a query as follows。

        select tbl.a,

                            tbl b,

                            tbl c

        from   table tbl

    where 1=1

          and   (a.start_date >= '2015-04-01' and a.start_date <= '2016-03-31') or (a.end_date >= '2015-04-01' and a.end_date <= '2016-03-31')

  var tableInfo = new GlideRecord('x_smei_table');

    .........................?

    .........................?

    .........................?

    .........................?

    .........................?

    .........................?

    .........................?

    tableInfo .query();

  How to implement this query?   help~~ï¼� help~~!

1 ACCEPTED SOLUTION

tianhb
Giga Contributor

The problem was solved.



var tableInfo = new GlideRecord("x_smei_table");



var startDate = new GlideDateTime();


startDate.setDisplayValueInternal(strStarDate + " 00:00:00");



var endDate = new GlideDateTime();


endDate.setDisplayValueInternal(strEndDate + " 23:59:59");



var dateQuery = "ent_start_dateBETWEEN" + startDate + "@" + endDate + "^ORent_end_dateBETWEEN" + startDate + "@" + endDate;


tableInfo .addEncodedQuery(dateQuery);


tableInfo.query();


View solution in original post

7 REPLIES 7

nitin_kumar
Mega Guru

Look into the following link, it will contain the query functions


GlideRecord - ServiceNow Wiki


Thanks,


Nitin.



PS: Hit answered, like, Helpful or Correct depending on the impact of the response.


Geoffrey2
ServiceNow Employee
ServiceNow Employee

Build the query in the list view, using the filer.


Run the filter.


Right-click on the query breadcrumbs, select Copy query.


Then use


var query = 'start_date!=NULL^type=normal^state=-5^start_date>=javascript:gs.daysAgoStart(0)';


var tableInfo = new GlideRecord('x_smei_table');


tableInfo.addEncodedQuery(query);


tableInfo .query();


Screen Shot 2016-09-13 at 8.46.31 PM.png


tianhb
Giga Contributor

Geoffrey,thanks a lot.



my query as follows:




var tableInfo = new GlideRecord('x_smei_table');



var dateQuery = "ent_start_dateBETWEENjavascript:gs.dateGenerate('" + strStarDate + "','start')@javascript:gs.dateGenerate('" + strEndDate + "','end')^ORent_end_dateBETWEENjavascript:gs.dateGenerate('" + strStarDate + "','start')@javascript:gs.dateGenerate('" + strEndDate + "','end')";



    tableInfo.addEncodedQuery(dateQuery);


    tableInfo .query();


And see the error:


        Function dateGenerate is not allowed in scope sn_custom_app.



it is why?


thank you very much.



Tian,



Try this one :



var dateQuery = "ent_start_dateBETWEENjavascript:gs.dateGenerate('" + strStarDate + "','start')@javascript:gs.dateGenerate('" + strEndDate + "','end')^ORent_end_dateBETWEENjavascript:gs.dateGenerate('" + strStarDate + "','start')@javascript:gs.dateGenerate('" + strEndDate + "','end')";



var tableInfo = new GlideRecord("x_smei_table");  


tableInfo.addEncodedQuery(dateQuery);  


tableInfo.query();


if (tableInfo.next()) {


        alert("record found");


}