Title: WP_Date_Query::build_value
Published: April 25, 2014
Last modified: May 20, 2026

---

# WP_Date_Query::build_value( string $compare, string|array $value ): string|false|int

## In this article

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

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

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

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

 `$compare`stringrequired

The compare operator to use.

`$value`string|arrayrequired

The value.

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

 string|false|int The value to be used in SQL or false on error.

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

    ```php
    public function build_value( $compare, $value ) {
    	if ( ! isset( $value ) ) {
    		return false;
    	}

    	switch ( $compare ) {
    		case 'IN':
    		case 'NOT IN':
    			$value = (array) $value;

    			// Remove non-numeric values.
    			$value = array_filter( $value, 'is_numeric' );

    			if ( empty( $value ) ) {
    				return false;
    			}

    			return '(' . implode( ',', array_map( 'intval', $value ) ) . ')';

    		case 'BETWEEN':
    		case 'NOT BETWEEN':
    			if ( ! is_array( $value ) || 2 !== count( $value ) ) {
    				$value = array( $value, $value );
    			} else {
    				$value = array_values( $value );
    			}

    			// If either value is non-numeric, bail.
    			foreach ( $value as $v ) {
    				if ( ! is_numeric( $v ) ) {
    					return false;
    				}
    			}

    			$value = array_map( 'intval', $value );

    			return $value[0] . ' AND ' . $value[1];

    		default:
    			if ( ! is_numeric( $value ) ) {
    				return false;
    			}

    			return (int) $value;
    	}
    }
    ```

[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/7.0/src/wp-includes/class-wp-date-query.php#L819)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/class-wp-date-query.php#L819-L864)

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

| 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.

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

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

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_date_query/build_value/?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_value%2F)
before being able to contribute a note or feedback.