Welcome to plsql4all.blogspot.com SQL, MYSQL, ORACLE, TERADATA, MONGODB, MARIADB, GREENPLUM, DB2, POSTGRESQL.

Friday, 20 September 2024

Date and time functions in BigQuery in Google Cloud Platform (GCP)

Date and time functions in BigQuery are essential for performing operations such as extracting parts of a date, calculating the difference between dates, or manipulating dates and times. These functions help process temporal data for reporting, analytics, and scheduling tasks.


CURRENT_DATE() / CURRENT_TIMESTAMP()

   - Explanation: These functions return the current date or timestamp in the respective data types.

     - CURRENT_DATE(): Returns the current date in the format YYYY-MM-DD. 

     - CURRENT_TIMESTAMP(): Returns the current date and time (timestamp) in UTC, including the time zone and fractional seconds.

   - Usage:

     - CURRENT_DATE(): Provides the current date.

     - CURRENT_TIMESTAMP(): Provides the current date and time.

   - Example:

     

     SELECT CURRENT_DATE() AS today_date;

     This returns the current date, e.g., "2024-09-21".

     SELECT CURRENT_TIMESTAMP() AS current_time;

     This returns the current date and time with time zone information, e.g., "2024-09-21 13:45:23.123456 UTC".

   - Practical Use:

     These functions are commonly used to compare data against the current date or timestamp. For instance:

     SELECT COUNT(*) AS recent_orders

     FROM orders

     WHERE order_date = CURRENT_DATE();

     This query counts the number of orders placed today.


DATE_ADD() / TIMESTAMP_ADD()

   - Explanation: These functions are used to add a specific time interval to a date or timestamp.

     - DATE_ADD(date, INTERVAL n unit): Adds n units (e.g., days, months, years) to a date.

     - TIMESTAMP_ADD(timestamp, INTERVAL n unit): Adds n units (e.g., minutes, hours, days) to a timestamp.

   - Usage:

     - DATE_ADD(date_column, INTERVAL n unit): Adds a time interval (like days or months) to a date.

     - TIMESTAMP_ADD(timestamp_column, INTERVAL n unit): Adds a time interval (like seconds or hours) to a timestamp.

   - Example:     

     SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 7 DAY) AS date_next_week;

     This query adds 7 days to the current date, showing the date for the next week.

     SELECT TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 2 HOUR) AS time_in_two_hours;

     This query adds 2 hours to the current timestamp, showing what the time will be in two hours.

   - Practical Use:

     These functions are useful when scheduling tasks or analyzing date-related data. For instance, calculating an expiration date:

     SELECT DATE_ADD(subscription_start, INTERVAL 1 YEAR) AS expiration_date

     FROM subscriptions;

     This query adds one year to the subscription start date to calculate the expiration date.


DATE_DIFF() / TIMESTAMP_DIFF()

   - Explanation: These functions compute the difference between two dates or timestamps.

     - DATE_DIFF(end_date, start_date, unit): Returns the difference between two dates in terms of the specified unit (e.g., days, months, years).

     - TIMESTAMP_DIFF(end_timestamp, start_timestamp, unit): Returns the difference between two timestamps in terms of the specified unit (e.g., minutes, hours, days).

   - Usage:

     - DATE_DIFF(end_date, start_date, unit): Calculates the difference between two dates.

     - TIMESTAMP_DIFF(end_timestamp, start_timestamp, unit): Calculates the difference between two timestamps.

   - Example:     

     SELECT DATE_DIFF('2024-12-31', '2024-09-21', DAY) AS days_until_end_of_year;

     This query calculates the number of days between today and the end of the year, which would return 101.     

     SELECT TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), '2024-09-20 14:00:00', HOUR) AS hours_since_event;

     This query calculates the number of hours since a specific event timestamp.

   - Practical Use:

     These functions are useful for determining elapsed time between events or for calculating time intervals. For instance:

     SELECT DATE_DIFF(order_date, delivery_date, DAY) AS delivery_duration

     FROM orders;

     This query calculates the number of days between order and delivery dates for each order.


EXTRACT()

   - Explanation: The EXTRACT() function extracts specific parts (such as year, month, day, or hour) from a date, time, or timestamp. This function is useful when you want to analyze or group data based on specific time periods.

   - Usage:

     - EXTRACT(part FROM date_or_timestamp): Extracts the specified part (e.g., year, month, day, hour) from a date or timestamp.

   - Example:

     SELECT EXTRACT(YEAR FROM order_date) AS order_year, EXTRACT(MONTH FROM order_date) AS order_month

     FROM orders;

     This query extracts the year and month from the order_date column, which is useful for time-based analysis or grouping.

     SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP()) AS current_hour;

     This query extracts the current hour from the current timestamp.

   - Available Parts:

     - YEAR: Extracts the year from the date.

     - MONTH: Extracts the month.

     - DAY: Extracts the day.

     - HOUR: Extracts the hour from a timestamp.

     - MINUTE: Extracts the minute.

     - SECOND: Extracts the second.

   - Practical Use:

     These functions are particularly useful for breaking down and analyzing data based on specific time components. For instance, grouping sales by month:

     SELECT EXTRACT(MONTH FROM order_date) AS order_month, COUNT(*) AS orders_count

     FROM orders

     GROUP BY order_month;

     This query groups the number of orders by month.

Summary of Use Cases

Date and time functions are critical when working with temporal data in BigQuery:

- CURRENT_DATE() and CURRENT_TIMESTAMP() are used to get the current date or time for comparison.

- DATE_ADD() and TIMESTAMP_ADD() help in scheduling or determining future dates.

- DATE_DIFF() and TIMESTAMP_DIFF() are used to measure time intervals between two events.

- EXTRACT() helps analyze and break down data based on specific time components (year, month, hour).

These functions enable powerful time-based analysis and operations on datasets with date or timestamp columns.

Please provide your feedback in the comments section above. Please don't forget to follow.