Google bigquery 带有字符串输入的日期\加载项Bigquery:

Google bigquery 带有字符串输入的日期\加载项Bigquery:,google-bigquery,dateadd,Google Bigquery,Dateadd,我试图使用字符串输入来比较日期范围和日期添加,但它不起作用 选择案例 当cast('2020-01-10'作为日期)>cast('2010-01-09'作为日期)和cast('2020-01-10'作为日期)和cast('2020-01-09'作为日期)如评论所述,请明确您使用的日期 P>为了缓解混乱(并反映你在实际生活中如何实际使用你的语句),考虑在CTE /表中“参数化”你的日期。这将使您的评估声明更容易阅读,您只需定义一次日期 with data as ( select cast('

我试图使用字符串输入来比较日期范围和日期添加,但它不起作用

  • 选择案例
    当cast('2020-01-10'作为日期)>cast('2010-01-09'作为日期)和cast('2020-01-10'作为日期)和cast('2020-01-09'作为日期)如评论所述,请明确您使用的日期

    <> P>为了缓解混乱(并反映你在实际生活中如何实际使用你的语句),考虑在CTE /表中“参数化”你的日期。这将使您的评估声明更容易阅读,您只需定义一次日期

    with data as (
      select cast('2020-01-10' as date) as test_date,cast('2010-01-09' as date) as begin_date
    )
    select test_date between begin_date and date_add(test_date, interval 7 day) as is_in_inverval
    from data
    

    这也可能是多余的,因为如果间隔为正值,
    test\u date
    将始终小于
    date\u add()
    的结果。

    查看您的查询后,我意识到您的问题它与您在评估时提供的日期有关

    在此之前,我想指出,如果您需要有关DATE\u ADD方法的支持,您可以阅读更多内容以及其他有用的方法

    关于你的第一个问题,我将其分为两部分:

    I)

    此项的输出为“更大”,因此满足条件

    II)

    选择
    案例
    
    当CAST(“2020-01-10”作为日期)时,我的意思是说查询2正在重新生成您的查询是正确的,请注意日期CAST(“2020-01-10”作为日期),您使用的是2020而不是2010。
    SELECT
      CASE
        WHEN CAST('2020-01-10' AS date) > CAST('2010-01-09' AS DATE) then 'greater'
      ELSE
      'none of the options'
    END
      val;
    
    SELECT
      CASE
         when CAST('2020-01-10' AS date)<= DATE_ADD(CAST('2010-01-09' AS DATE), INTERVAL 7 DAY ) THEN 'less or equal'
      ELSE
      'none of the options'
    END
      val;