如何在Google BigQuery中将现有列日期转换为当月第一天
在Google BigQuery中将日期转换为当月第一天的方法
嘿,这个需求在BigQuery里有几种简单直接的实现方式,我分两种常见场景给你说明:
情况1:字段是DATE类型
如果你的日期字段本身就是BigQuery的DATE类型,用DATE_TRUNC()函数就能快速搞定——它可以把日期截断到指定的时间单位(这里选MONTH),直接返回当月第一天的DATE值。要是需要按照MM/DD/YYYY的格式显示,再搭配FORMAT_DATE()函数就行。
示例查询:
SELECT your_date_column AS original_date, -- 获取当月第一天的DATE类型值 DATE_TRUNC(your_date_column, MONTH) AS first_day_of_month, -- 格式化为MM/DD/YYYY格式的字符串 FORMAT_DATE("%m/%d/%Y", DATE_TRUNC(your_date_column, MONTH)) AS first_day_formatted FROM `your_project.your_dataset.your_table`
比如原日期是2018-12-16,运行后first_day_formatted会返回12/01/2018。
情况2:字段是STRING类型(如'12/16/2018')
如果日期是以字符串形式存储的,需要先把它转成DATE类型,再进行截断和格式化:
- 用
PARSE_DATE()匹配原字符串的格式,将其转为DATE类型 - 用
DATE_TRUNC()截断到当月第一天 - 最后用
FORMAT_DATE()输出目标格式
示例查询:
SELECT your_string_date AS original_date_str, FORMAT_DATE( "%m/%d/%Y", DATE_TRUNC( PARSE_DATE("%m/%d/%Y", your_string_date), MONTH ) ) AS first_day_formatted FROM `your_project.your_dataset.your_table`
小提示
- 如果原字符串的日期格式不是
MM/DD/YYYY(比如YYYY-MM-DD),只需要调整PARSE_DATE()里的格式符即可,比如改成PARSE_DATE("%Y-%m-%d", your_string_date)。 - 要是不需要格式化字符串,直接用
DATE_TRUNC()返回的DATE类型结果就足够了,后续还能方便做其他日期运算。
内容的提问来源于stack exchange,提问作者Anil
相关产品推荐
相关产品推荐

