使用Google BigQuery计算两个日期之间的差异?

26

如何在Google Big Query中获取2个时间戳字段之间的天数差异?

我所知道的唯一函数是Datediff,但它仅适用于Legacy SQL,而我使用的是Standard SQL。

例如:20180115到20180220之间的差异为36天。


这只是因为1月31日的部分原因,也因为2月4日。不管怎样,函数是DATEDIF吗? - Strawberry
不,这个函数在标准 SQL 上不起作用。 - Evyatar Aviram
EXTRACT(DAY FROM DATE '20180220' - DATE '20180115') 这个怎么样?我只是猜测。 - Strawberry
不行,因为如果它们在不同的月份,那就会出错。 - Evyatar Aviram
我想其实我不知道“标准”的SQL是什么。 - Strawberry
2个回答

51
根据文档,在标准SQL中应使用DATE_DIFF函数。 您的查询应如下所示:
SELECT DATE_DIFF(DATE '2018-02-20', DATE '2018-01-15', DAY) as days_diff;

结果:

Row days_diff    
 1     36   

4
首先,您需要使用PARSE_DATE()函数将日期的字符串表示形式转换为日期类型,然后使用DATE_DIFF()函数计算两个日期之间的差异/距离,如下例所示。
#standardSQL
SELECT 
  DATE_DIFF(
    PARSE_DATE('%Y%m%d', '20180220'), 
    PARSE_DATE('%Y%m%d', '20180115'), 
    DAY
  ) days

产生:
Row days     
1   36   

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接