Аналог sql функции DATE_FORMAT() в Битрикс D7

Рейтинг: 0Ответов: 1Опубликовано: 27.02.2023

Есть поле в таблице с датой в формате YYYY-MM-DD. Например 2015-03-25.

Как с помощью D7 отфильтровать по этой дате только по месяцу и дню выкинув год. То есть на SQL это будет выглядеть так:

SELECT mydate FROM table WHERE DATE_FORMAT(mydate, "%d.%m") = "25-03";

Как написать такое выражение с помощью D7 ?

Ответы

▲ 2Принят

Это делается через registerRuntimeField, вот пример кода

<?php

use Bitrix\Main\ORM\Query\Query;

$query = (new Query(Table::class))
    ->setSelect([
        "ID",
        "shortDate"
    ])
    ->where("shortDate", "=", "25.03")
    ->registerRuntimeField('shortDate', [
        'data_type' => 'string',
        'expression' => ['DATE_FORMAT(%s, "%%d.%%m")', 'mydate']
    ]);
//var_dump($query->exec()->fetchAll());
//var_dump($query->getQuery());