如何将日期转换为 CDT 并使用 BigQuery 制作连接字符串?

Posted

技术标签:

【中文标题】如何将日期转换为 CDT 并使用 BigQuery 制作连接字符串?【英文标题】:How to cast date to CDT and make concatenated string using BigQuery? 【发布时间】:2021-09-27 19:55:28 【问题描述】:

我正在尝试以下方法:

count(distinct concat(x.my_id,cast(date_trunc('day',DATETIME(x.my_datetime,'US/Central')) as string)))

但我得到了错误:

Found invalid date part argument function call syntax for DATETIME()

当我将 DATETIME(x.my_datetime,'US/Central') 放在自己的行上时,它没有错误。那么如何才能将日期时间转换为 cdt 并将其放入串联字符串中呢?

【问题讨论】:

你能分享一个完整的样本数据集和预期的结果吗?您还可以分享一个可重现的查询,以便社区可以轻松调查该问题吗? 【参考方案1】:

两件事:

    date_trunc() 应该有日期/日期时间/时间戳首先,然后是日期部分。 日期部分应该是文字 day 而不是字符串 'day'

考虑到这一点,您的表达方式应该是count(distinct concat(x.my_id,cast(date_trunc(DATETIME(x.my_datetime,'US/Central'), day) as string)))

【讨论】:

请注意,您收到的错误消息是因为 date_trunc() 的第二个参数需要文字日期部分(日、周、月等),但返回的是日期时间,导致错误。

以上是关于如何将日期转换为 CDT 并使用 BigQuery 制作连接字符串?的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:将整数列转换为日期间隔并添加到日期列

BigQuery 帮助 - 如何转换并转换为浮点和日期格式

从字符串转换 BigQuery 日期

如何在 BigQuery 中以字符串格式将工作日月份转换为日期?

BigQuery 将字符串转换为日期

如何在 Perl 中将日期转换为纪元时间?