【问题标题】:Bigquery time range大查询时间范围
【发布时间】:2021-08-17 04:34:18
【问题描述】:

我想获取给定日期范围内的订单列表,但不包括下午 2 点到 10 点之间的订单。 谁能帮我完成以下查询

select * 
from abc 
where 
    date(order_created) between '2021-05-22' and '2021-05-24' 
    and not between <order placed between 2pm-10pm>

【问题讨论】:

    标签: sql date time google-bigquery


    【解决方案1】:

    您可以使用time() 获取时间部分。这允许:

    date(order_created) between '2021-05-22' and '2021-05-24' and
    time(order_created) not between '14:00:00' and '20:00:00'
    

    请注意,这不包括两个端点。更常见的是,您希望排除第一个但保留第二个:

    date(order_created) between '2021-05-22' and '2021-05-24' and
    (time(order_created) < '14:00:00' or
     time(order_created) >= '20:00:00'
    )
    

    【讨论】:

    • time(order_created) not between '14:00:00' and '19:59:59' :o)
    【解决方案2】:

    尝试: and EXTRACT(TIME FROM order_created) not between '14:00:00' and '22:00:00'

    注意:我假设您的 order_created 列也包含时间。仅供参考:在 BigQuery 中有两种类型的字段包含日期和时间:TimestampDatetime,因此您的 order_created 字段可能是这两种类型之一。 SQL 在处理一种类型或另一种类型之间略有不同,但EXTRACT 函数适用于两种类型。

    【讨论】:

      猜你喜欢
      • 2015-06-06
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      相关资源
      最近更新 更多