--- /dev/null
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved. |
+ | |
+ | This work is published under the GNU AGPLv3 license with some |
+ | permitted exceptions and without any warranty. For full license |
+ | and copyright information, see https://civicrm.org/licensing |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Query;
+
+/**
+ * Sql function
+ */
+class SqlFunctionMONTH extends SqlFunction {
+
+ protected static $category = self::CATEGORY_DATE;
+
+ protected static $dataType = 'Integer';
+
+ protected static function params(): array {
+ return [
+ [
+ 'max_expr' => 1,
+ 'optional' => FALSE,
+ ],
+ ];
+ }
+
+ /**
+ * @return string
+ */
+ public static function getTitle(): string {
+ return ts('Month only');
+ }
+
+ /**
+ * @return string
+ */
+ public static function getDescription(): string {
+ return ts('The numeric month (1-12) of a date.');
+ }
+
+}
$this->assertGreaterThanOrEqual($result[4]['rand'], $result[5]['rand']);
}
- public function testYearInWhereClause() {
+ public function testDateInWhereClause() {
$lastName = uniqid(__FUNCTION__);
$sampleData = [
['first_name' => 'abc', 'last_name' => $lastName, 'birth_date' => '2009-11-11'],
->selectRowCount()
->execute();
$this->assertCount(2, $result);
+
+ // Try an expression in the value
+ $result = Contact::get(FALSE)
+ ->addWhere('last_name', '=', $lastName)
+ ->addWhere('MONTH(birth_date)', '=', 'MONTH("2030-11-12")', TRUE)
+ ->addSelect('birth_date')
+ ->execute()->single();
+ $this->assertEquals('2009-11-11', $result['birth_date']);
}
}