如何使用Mode SQL的Liquid SQL实现当月首尾日动态日期参数
问题原因
你提供的代码无法运行的核心原因是:Mode的{% form %}参数块中,default字段不支持直接传入SQL函数,参数默认值需要由Liquid预解析生成,因此要使用Liquid内置的日期过滤器来计算动态日期值,再传入SQL中执行。
正确实现代码
{% form %} start_date: type: date default: {{ 'now' | date: '%Y-%m-01' }} end_date: type: date default: {{ 'now' | last_of_month | date: '%Y-%m-%d' }} {% endform %}
使用说明
- 上述代码中
{{ 'now' | date: '%Y-%m-01' }}会直接输出当前月首日的YYYY-MM-DD格式字符串,作为起始日期的默认值 - 结束日期默认值通过
last_of_month过滤器直接计算当前月最后一天,无需调用数据库SQL函数,在Liquid预解析阶段就会生成符合要求的日期值 - 如果需要默认取上个月的首尾日期,只需在日期计算逻辑中增加
| minus: 1.month即可,示例:# 上个月首日默认值示例 default: {{ 'now' | minus: 1.month | date: '%Y-%m-01' }}
内容的提问来源于stack exchange,提问作者zscheimer
相关产品推荐
相关产品推荐

