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

Trino日期过滤疑问:如何实现日期范围的SELECT查询?

Trino SQL 日期范围查询实现方法

结合你15年MSSQL使用经验,以及当前通过DBeaver查询Salesforce数据的场景,以下是Trino中实现日期范围SELECT查询的标准写法,针对不同字段类型给出对应示例:

1. DATE类型字段的范围查询

如果字段是纯日期类型(无时间部分),直接使用DATE 'YYYY-MM-DD'格式的字面量即可:

SELECT *
FROM your_salesforce_table
WHERE date_column BETWEEN DATE '2024-01-01' AND DATE '2024-06-30';

-- 等价写法(更灵活,适合排除边界值场景)
SELECT *
FROM your_salesforce_table
WHERE date_column >= DATE '2024-01-01'
  AND date_column < DATE '2024-07-01';

和MSSQL差异:Trino要求日期字面量必须显式声明DATE前缀,MSSQL允许直接用'YYYY-MM-DD'隐式转换

2. TIMESTAMP/DATETIME类型字段的范围查询

针对Salesforce带时间戳的字段(比如CreatedDate),可以用两种方式过滤:

-- 精确到秒的时间范围
SELECT *
FROM your_salesforce_table
WHERE created_date BETWEEN TIMESTAMP '2024-01-01 00:00:00' AND TIMESTAMP '2024-06-30 23:59:59';

-- 忽略时间,仅按日期范围过滤
SELECT *
FROM your_salesforce_table
WHERE DATE(created_date) BETWEEN DATE '2024-01-01' AND DATE '2024-06-30';

和MSSQL差异:Trino用DATE()函数提取日期部分,MSSQL用CAST(xxx AS DATE);Trino的TIMESTAMP字面量必须显式声明

3. 字符串格式日期的转换查询

如果日期字段是字符串类型(比如Salesforce导出的文本格式日期),需用DATE_PARSE函数转换后再过滤:

SELECT *
FROM your_salesforce_table
WHERE DATE_PARSE(string_date_column, '%Y-%m-%d') BETWEEN DATE '2024-01-01' AND DATE '2024-06-30';

和MSSQL差异:Trino用DATE_PARSE+格式符解析字符串,MSSQL用CONVERT(DATE, xxx, 23);格式符参考Trino规范,比如%Y代表4位年,%m代表2位月

常见错误规避

  • 禁止直接用字符串和日期字段比较(比如date_column = '2024-01-01'),Trino不支持这种隐式转换,会触发类型不匹配错误
  • 日期偏移用DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY),而非MSSQL的DATEADD(day, -30, GETDATE())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:53:21