Community Connector中时间戳转YEAR_MONTH_DAY格式日期的问题
解决Community Connector时间戳转YEAR_MONTH_DAY维度的问题
问题场景
开发Community Connector时,已对接API获取时间戳格式的日期,需将其转换为YEAR_MONTH_DAY格式作为维度字段,尝试的代码未生效。
原尝试代码
fields.newDimension() .setId('created_at') .setName('Created At') .setDescription('Timestamp as a date.') .setFormula("TODATE($timestamp, '%Y-%m-%d %H:%M:%S%z', '%Y%m%d')") .setType(types.YEAR_MONTH_DAY)
问题分析与解决方案
核心错误点
原代码公式中引用的$timestamp与字段IDcreated_at不匹配,应改为$created_at。此外需根据API返回的时间戳类型选择对应转换逻辑:
情况1:API返回秒级数字时间戳(如1699996800)
使用UNIX_DATETIME将数字时间戳转为日期格式,再通过TODATE调整为YEAR_MONTH_DAY要求的格式:
fields.newDimension() .setId('created_at') .setName('Created At') .setDescription('Timestamp converted to date.') .setFormula("TODATE(UNIX_DATETIME($created_at), '%Y-%m-%d', '%Y%m%d')") .setType(types.YEAR_MONTH_DAY)
情况2:API返回毫秒级数字时间戳(如1699996800000)
需先将时间戳除以1000转为秒级,再进行转换:
fields.newDimension() .setId('created_at') .setName('Created At') .setDescription('Timestamp converted to date.') .setFormula("TODATE(UNIX_DATETIME($created_at / 1000), '%Y-%m-%d', '%Y%m%d')") .setType(types.YEAR_MONTH_DAY)
情况3:API返回带时区的字符串时间戳(如2023-11-14 12:00:00+0800)
确保格式符与返回字符串完全匹配,若时区格式为±HH:MM(如+08:00),需将%z改为%:z:
fields.newDimension() .setId('created_at') .setName('Created At') .setDescription('Timestamp converted to date.') .setFormula("TODATE($created_at, '%Y-%m-%d %H:%M:%S%z', '%Y%m%d')") .setType(types.YEAR_MONTH_DAY)
内容的提问来源于stack exchange,提问作者Muhammad Ashir
相关产品推荐
相关产品推荐

