简体   繁体   English

Suitescript,如何使用query.Operator.ON从数据库获取确切的日期?

[英]Suitescript, How to use query.Operator.ON to get record has exact day from database?

I'm trying to get records has a birthday in [day] by using query ('N/query'). 我试图通过使用查询('N / query')在[day]中获得生日记录。 And I'm looking for using the operator "Operator.ON". 我正在寻找使用运算符“ Operator.ON”。 However, I always get the empty list from DB. 但是,我总是从数据库获取空列表。 When I change from "Operator.ON" to "Operator.ON_AFTER" I can get results. 当我从“ Operator.ON”更改为“ Operator.ON_AFTER”时,可以获得结果。

My date format is "D/M/YYYY" In DB, the record date is '1/5/2019' 我的日期格式为“ D / M / YYYY”。在数据库中,记录日期为“ 1/5/2019”

The full script is attached. 完整脚本已随附。 Please let me know the best ways to get record by an exact date. 请让我知道在确切日期之前获取记录的最佳方法。

 require(['N','N/search','N/record','N/query', 'N/currentRecord', 'N/format']);
    var query = require('N/query');
    var search = require('N/search');
    var currentRecord = require('N/currentRecord');

    var birth = currentRecord.get().getValue({
                fieldId: 'custentity_date_of_birth'
            });

    var customSearch = query.create({
                type: query.Type.CUSTOMER
            });

    var relContact = customSearch.autoJoin({
                fieldId: 'contact'
            });

            customSearch.columns = [
                customSearch.createColumn({
                    fieldId: 'Id'
                }),
                customSearch.createColumn({
                    fieldId: 'firstname'
                }),
                customSearch.createColumn({
                    fieldId: 'lastname'
                }),
                customSearch.createColumn({
                    fieldId: 'email'
                }),
                customSearch.createColumn({
                    fieldId: 'custentity_date_of_birth'
                }),
                relContact.createColumn({
                    fieldId: 'Id'
                })
            ];

    var condFName = customSearch.createCondition({
                fieldId: 'firstname',
                operator: query.Operator.IS,
                values: 'trung'
            });

            var condLName = customSearch.createCondition({
                fieldId: 'lastname',
                operator: query.Operator.IS,
                values: 'null'
            });

            var condBirth = customSearch.createCondition({
                fieldId: 'custentity_date_of_birth',
                operator: query.Operator.ON,
                values: '1/5/2019'
            });

            var condGetBirth = customSearch.createCondition({
                fieldId: 'custentity_date_of_birth',
                operator: query.Operator.EMPTY_NOT
            });

            customSearch.condition = customSearch.and(condFName, condLName, condBirth);

            var sResult = customSearch.run();
            sResult.results

the reason is my application is using GTM+7 In form, the date picker get date '1/5/2019' and passing this string to script 原因是我的应用程序使用GTM + 7表单,日期选择器获取日期“ 1/5/2019”并将此字符串传递给脚本

In backend, Netsuite get this day '1/5/2019' and parse it to GTM+7 -> 30/4/2019 and compare in data. 在后端,Netsuite将这一天定为“ 1/5/2019”,并将其解析为GTM + 7-> 30/4/2019并进行数据比较。 It never match with the record '1/5/2019' in db 它永远不会与数据库中的记录'1/5/2019'相匹配

I tried to convert date & timezone from date picker but useless. 我试图从日期选择器转换日期和时区,但没用。 I must hardcode date+1 day and pass to the condition then it can get exact day from DB. 我必须对date + 1天进行硬编码并传递给条件,然后它才能从DB获得确切的日期。

You can create a saved search and the script reference the saved search. 您可以创建一个保存的搜索,并且脚本引用该保存的搜索。 Using saved will lessen the coding and you can run the saved search in the UI to check if you are getting the right result. 使用保存的将减少编码,您可以在用户界面中运行保存的搜索以检查是否获得正确的结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM