10
votes

How can I get the difference in days between 2 timestamp fields in Google Big Query?

The only function I know is Datediff which only works in Legacy SQL but I'm in Standard SQL.

For example: the difference between 20180115 to 20180220 is 36 days.

2
It's only in part because of Jan 31. It's also because of Feb 4. Anyway, isn't the function DATEDIF? - Strawberry
No, this function doesn't work on standard sql. - Evyatar Aviram
How about EXTRACT(DAY FROM DATE '20180220' - DATE '20180115') - I'm just guessing here. - Strawberry
No, because if they are in different months it will be wrong. - Evyatar Aviram
I guess I don't really know what 'standard' sql is. - Strawberry

2 Answers

21
votes

As per documentation, you should use DATE_DIFF function in standard SQL.

Your query should look like this:

SELECT DATE_DIFF(DATE '2018-02-20', DATE '2018-01-15', DAY) as days_diff;

result:

Row days_diff    
 1     36   
4
votes

First you need to "translate" you string representation of date into date type using PARSE_DATE() function and then DATE_DIFF() function allows you to calculate difference/distance between two dates as in example below

#standardSQL
SELECT 
  DATE_DIFF(
    PARSE_DATE('%Y%m%d', '20180220'), 
    PARSE_DATE('%Y%m%d', '20180115'), 
    DAY
  ) days

produces:

Row days     
1   36