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

在DBT中将长整型时间戳转换为YYYY-MM-DD格式日期的问题

问题分析与解决方案

问题根源

你的DBT查询中存在模板语法误用:{{'scheme_t'}}会被DBT渲染成字符串常量'scheme_t',而非引用表中的scheme_t字段。当FROM_UNIXTIME()接收到这个字符串时,数据库会将其强制转换为数值,结果通常为0(无效字符串转数值的默认行为),而Unix时间戳0对应的日期就是1970-01-01,这就是你得到错误结果的原因。

修复后的查询

直接引用表字段即可,无需使用带引号的模板语法(如果没有动态字段需求的话):

SELECT
    id,
    scheme_name,
    DATE(FROM_UNIXTIME(scheme_t)) AS scheme_date
FROM
    scheme_table;

如果确实需要通过DBT变量动态指定字段名(比如字段名由配置决定),则需要去掉引号,使用正确的变量引用方式:

SELECT
    id,
    scheme_name,
    DATE(FROM_UNIXTIME({{ scheme_t }})) AS scheme_date
FROM
    scheme_table;

(注:此方式需确保你在DBT项目中已正确定义scheme_t变量,指向目标字段名)

验证结果

当输入时间戳1672492800时,FROM_UNIXTIME(1672492800)会返回'2023-01-01 00:00:00',经过DATE()函数提取后,最终得到正确的日期结果2023-01-01。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:42:02