【问题标题】:Parse out Y-M-D from Y-M-D H-M-S UTC sql bigquery从 Y-M-D H-M-S UTC sql bigquery 中解析出 Y-M-D
【发布时间】:2024-04-27 09:05:01
【问题描述】:

我需要从 BigQuery 的列中解析出 '%Y%m%d'。我的数据如下所示:

datetime_published
2000-09-25 13:28:15 UTC
2018-12-22 16:03:00 UTC
2018-05-04 03:05:00 UTC

我尝试了以下方法:

SELECT PARSE_DATE('%Y%m%d', datetime_published) as date

错误信息:No matching signature for function PARSE_DATE for argument types: STRING, TIMESTAMP. Supported signature: PARSE_DATE(STRING, STRING) 期望的输出: 2000-09-25

【问题讨论】:

    标签: sql date datetime parsing google-bigquery


    【解决方案1】:

    为什么不直接转换为日期?

    select date(datetime)
    

    注意:这适用于 datetimetimestamp 值。这些在 BigQuery 中有所不同。您有一个 timestamp 列,您将其称为 datetime - 用词不当。

    【讨论】:

    • 我已编辑问题并重命名了该列。我试过select date(datetime_published),但由于某种原因,它认为这是一个函数。错误信息是:Function not found: datetime_published
    • @Chique_Code 。 . .该代码不应产生该错误。您将有一个 datetime_published(. . .) 用于函数调用。
    • 但它确实......这是一个完整的代码。这应该很简单...select datetime_published(datetime) as publish_date from 'metadata_table' limit 200 错误:Function not found: datetime_published at [1:8] Learn More about BigQuery SQL Functions.
    • 为什么表名两边有单引号?为什么你有datetime_published(datetime)?该代码与此答案没有任何关系
    • 是反引号,这里改成单引号,代码块中有代码。