Title: WP_Date_Query::build_time_query
Published: April 25, 2014
Last modified: February 24, 2026

---

# WP_Date_Query::build_time_query( string $column, string $compare, int|null $hour = null, int|null $minute = null, int|null $second = null ): string|false

## In this article

 * [Description](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#wp--skip-link--target)

Builds a query string for comparing time values (hour, minute, second).

## 󠀁[Description](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#description)󠁿

If just hour, minute, or second is set than a normal comparison will be done.
However
if multiple values are passed, a pseudo-decimal time will be created in order to
be able to accurately compare against.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#parameters)󠁿

 `$column`stringrequired

The column to query against. Needs to be pre-validated!

`$compare`stringrequired

The comparison operator. Needs to be pre-validated!

`$hour`int|nulloptional

An hour value (0-23).

Default:`null`

`$minute`int|nulloptional

A minute value (0-59).

Default:`null`

`$second`int|nulloptional

A second value (0-59).

Default:`null`

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#return)󠁿

 string|false A query part or false on failure.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#source)󠁿

    ```php
    public function build_time_query( $column, $compare, $hour = null, $minute = null, $second = null ) {
    	global $wpdb;

    	// Have to have at least one.
    	if ( ! isset( $hour ) && ! isset( $minute ) && ! isset( $second ) ) {
    		return false;
    	}

    	// Complex combined queries aren't supported for multi-value queries.
    	if ( in_array( $compare, array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ), true ) ) {
    		$return = array();

    		$value = $this->build_value( $compare, $hour );
    		if ( false !== $value ) {
    			$return[] = "HOUR( $column ) $compare $value";
    		}

    		$value = $this->build_value( $compare, $minute );
    		if ( false !== $value ) {
    			$return[] = "MINUTE( $column ) $compare $value";
    		}

    		$value = $this->build_value( $compare, $second );
    		if ( false !== $value ) {
    			$return[] = "SECOND( $column ) $compare $value";
    		}

    		return implode( ' AND ', $return );
    	}

    	// Cases where just one unit is set.
    	if ( isset( $hour ) && ! isset( $minute ) && ! isset( $second ) ) {
    		$value = $this->build_value( $compare, $hour );
    		if ( false !== $value ) {
    			return "HOUR( $column ) $compare $value";
    		}
    	} elseif ( ! isset( $hour ) && isset( $minute ) && ! isset( $second ) ) {
    		$value = $this->build_value( $compare, $minute );
    		if ( false !== $value ) {
    			return "MINUTE( $column ) $compare $value";
    		}
    	} elseif ( ! isset( $hour ) && ! isset( $minute ) && isset( $second ) ) {
    		$value = $this->build_value( $compare, $second );
    		if ( false !== $value ) {
    			return "SECOND( $column ) $compare $value";
    		}
    	}

    	// Single units were already handled. Since hour & second isn't allowed, minute must to be set.
    	if ( ! isset( $minute ) ) {
    		return false;
    	}

    	$format = '';
    	$time   = '';

    	// Hour.
    	if ( null !== $hour ) {
    		$format .= '%H.';
    		$time   .= sprintf( '%02d', $hour ) . '.';
    	} else {
    		$format .= '0.';
    		$time   .= '0.';
    	}

    	// Minute.
    	$format .= '%i';
    	$time   .= sprintf( '%02d', $minute );

    	if ( isset( $second ) ) {
    		$format .= '%s';
    		$time   .= sprintf( '%02d', $second );
    	}

    	return $wpdb->prepare( "DATE_FORMAT( $column, %s ) $compare %f", $format, $time );
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/class-wp-date-query.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/class-wp-date-query.php#L988)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/class-wp-date-query.php#L988-L1063)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#related)󠁿

| Uses | Description | 
| [WP_Date_Query::build_value()](https://developer.wordpress.org/reference/classes/wp_date_query/build_value/)`wp-includes/class-wp-date-query.php` |

Builds and validates a value string based on the comparison operator.

  | 
| [wpdb::prepare()](https://developer.wordpress.org/reference/classes/wpdb/prepare/)`wp-includes/class-wpdb.php` |

Prepares a SQL query for safe execution.

  |

| Used by | Description | 
| [WP_Date_Query::get_sql_for_clause()](https://developer.wordpress.org/reference/classes/wp_date_query/get_sql_for_clause/)`wp-includes/class-wp-date-query.php` |

Turns a first-order date query into SQL for a WHERE clause.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_date_query/build_time_query/?output_format=md#changelog)󠁿

| Version | Description | 
| [3.7.0](https://developer.wordpress.org/reference/since/3.7.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_date_query%2Fbuild_time_query%2F)
before being able to contribute a note or feedback.