Как сравнить ДАТУ со строкой ТЕКСТА в функции ЗАПРОС в Google Таблицах?

Цель: вернуть конкретное значение из таблицы данных на основе запроса (как если бы функция ВПР предоставляла возможность для нескольких критериев).

Проблема: данные в исходной таблице представляют собой значение, и я не могу изменить формат источника данных. Когда я запускаю функцию QUERY, я получаю #N/A. Я знаю, что это связано с типом данных исходной таблицы, потому что, когда я обновляю формат до «обычного текста», значение работает.

Вот мой запрос:

=QUERY(SessionsData,"select D where B='"&TEXT(Date(YEAR(TODAY()),4,$A143),"yyyy-MM-dd")&"' limit 1",0)

Я знаю, что логика работает, посмотрите это видео, чтобы вкратце демо.

Как я могу получить результаты этого сравнения?


person Kevin Taylor    schedule 22.06.2016    source источник
comment
Привет, Кевин, вы можете поделиться копией своей таблицы? Так было бы намного проще.   -  person JPV    schedule 22.06.2016


Ответы (1)


Адаптировано из этого ответа:

В языке запросов есть две функции, помогающие сравнивать даты.

  • Скалярная функция todate() преобразует даты электронной таблицы (например, столбец B) в значения даты запроса. Если значение начинается с даты и времени, оно возвращает только часть даты.
  • Модификатор date обрабатывает специально отформатированные строки как значения даты запроса.

Используйте их так:

=QUERY(SessionsData,"select D where todate(B)=date '"&TEXT(Date(YEAR(TODAY()),4,$A143),"yyyy-MM-dd")&"' limit 1",0)
                                    ^^^^^^^^^ ^^^^
person Mogsdad    schedule 23.06.2016