【问题标题】:BigQuery SQL WHERE Date Between Current Date and -15 DaysBigQuery SQL WHERE 当前日期和 -15 天之间的日期
【发布时间】:2017-05-05 18:11:09
【问题描述】:

我正在尝试在 BigQuery 的 SQL 的WHERE 子句中编写以下条件,但我在语法上遇到了困难,特别是 date 数学:

WHERE date_column between current_date() and current_date() - 15 days

这在 MySQL 中似乎很容易,但我无法让它与 BigQuery SQL 一起使用。

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    使用current_date()函数

    SELECT ARRAY_TO_STRING(split(cast(current_date() as string),"-"),'')
    

    【讨论】:

      【解决方案2】:

      这对我有用。

      WHERE DATE(date_column) BETWEEN DATE(DATE_ADD(CURRENT_DATE(), -15, 'DAY'))
      AND CURRENT_DATE()
      

      【讨论】:

        【解决方案3】:

        使用DATE_SUB

        select * 
        from TableA
        where Date_Column between DATE_SUB(current_date(), INTERVAL 15 DAY) and current_date()
        

        记住,between 首先需要最旧的日期

        【讨论】:

        • 我收到此错误No matching signature for operator BETWEEN for argument types: DATETIME, DATE, DATE. Supported signature: (ANY) BETWEEN (ANY) AND (ANY)
        • @urwaCFC 我遇到了同样的问题。我的猜测是 date_column 不是日期类型,在我的情况下它是类型时间戳。尝试:当前日期()之间的日期(日期列)...
        • @UrvahShabbir 对于时间戳,您可以使用与日期类似的运算符,例如:WHERE Date_Column BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 15 DAY) AND CURRENT_TIMESTAMP()
        【解决方案4】:

        您可能应该切换两者 - 语法应该如下:

        WHERE date_column BETWEEN DATE_ADD(CURRENT_DATE(), -15, 'DAY') AND CURRENT_DATE()
        

        【讨论】:

        • DATE_ADD 版本有效。 bigquery 不支持 DATE_SUB
        • 如果您在 bigquery 中使用标准 SQL,DATE_SUB 版本现在可以使用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        相关资源
        最近更新 更多