You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BUILTIN.PERIOD查询最近7天的客户发票?

解决NetSuite SuiteQL查询最近7天客户发票的问题

问题根源

你的SQL执行失败主要有两个原因:

  1. 期间代码选错了:SDLW(即SAME_DAY_LAST_WEEK)仅对应上周的同一天,根本不是你要的「最近7天」日期范围。
  2. 语法逻辑错误:BUILTIN.PERIOD返回的是日期范围值,不能用IN来匹配,得用BETWEEN或者>=/<=这类范围比较符。

BUILTIN.PERIOD的正确用法

NetSuite SuiteQL里的BUILTIN.PERIOD是用来生成预定义日期/期间范围的函数,标准参数格式是:

BUILTIN.PERIOD('<期间代码>', '<起止标识>', '<范围>', '<可选操作符>')

核心参数解释:

  • 期间代码:常用的有这些:
    • LAST_7_DAYS:最近7天(包含当日)
    • LAST_WEEK:上周完整一周
    • SDLW:上周的同一天
  • 起止标识:填START拿范围起始日期,填END拿结束日期
  • 范围:一般填ALL表示取完整期间
  • 可选操作符:比如>可用来调整范围边界(比如大于起始日期)

符合需求的正确SQL

如果要查**最近7天(含当日)**的客户发票,直接用LAST_7_DAYS作为期间代码,搭配范围比较:

SELECT T.* 
FROM Transaction AS T
WHERE T.type = 'CustInvc' 
  AND T.trandate BETWEEN BUILTIN.PERIOD('LAST_7_DAYS', 'START', 'ALL') 
                     AND BUILTIN.PERIOD('LAST_7_DAYS', 'END', 'ALL')

要是需要排除当日,只查前7天,加个操作符调整:

SELECT T.* 
FROM Transaction AS T
WHERE T.type = 'CustInvc' 
  AND T.trandate >= BUILTIN.PERIOD('LAST_7_DAYS', 'START', 'ALL', '<')

顺便说下SDLW的正确用法

如果你的需求其实是查上周同一天的发票,写法应该是这样:

SELECT T.* 
FROM Transaction AS T
WHERE T.type = 'CustInvc' 
  AND T.trandate = BUILTIN.PERIOD('SDLW', 'START', 'ALL')

内容的提问来源于stack exchange,提问作者Tyson Freeze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:25:22