В таблице events поле event_date_text хранит дату как текст в формате YYYY-MM-DD. Вы хотите считать метрики по неделям и использовать функции дат. Что логичнее сделать в запросе?
AПривести к типу даты:
CAST(event_date_text AS date) или event_date_text::date.BПривести к числу:
CAST(event_date_text AS int).CПривести к нижнему регистру:
LOWER(event_date_text).DУбрать пробелы:
TRIM(event_date_text) и больше ничего.Правильный ответ. Если дальше нужны операции с датами, лучше явно привести текст к типу даты.
Разбор
Даже если строковые даты иногда «сравниваются правильно», это всё равно строковый тип: функции дат, группировки по периодам и проверки корректности формата становятся проблемными. Явный каст в date делает логику запроса прозрачной и снижает риск неожиданных ошибок при дальнейшем использовании поля.
Проверь себя · 1/3разбор после ответа
У вас есть таблицы
users(email) и marketing_signups(email). В одной системе email сохраняется как Ivan@Example.com, в другой — ivan@example.com. Какой подход в JOIN чаще всего решает проблему без изменения данных в таблицах?Ещё вопросы по теме «Строки и приведение типов»
- У вас есть таблицы `users(email)` и `marketing_signups(email)`. В одной системе email сохраняется как `Ivan@Example.com`, в другой — `ivan@example.com`. Какой подход в `JOIN` чаще всего решает проблему без изменения данных в таблицах?
- В таблице `products` категория хранится как `Books`, `books`, `BOOKS`. Вы хотите отфильтровать все варианты категории «books» в одном запросе. Какое условие в `WHERE` наиболее надежно?
- В отчёте по городам вы делаете агрегацию по `city`, но видите две строки: `Moscow` и `Moscow ` (с пробелом в конце). Как исправить это прямо в запросе?
- Поле `price_text` хранит цены как текст, например `2`, `10`, `100`. Аналитик написал фильтр `WHERE price_text > '10'` и получил странные результаты. Что нужно поменять, если сравнение должно быть числовым?
- В `amount_text` суммы записаны как текст, но иногда встречается пустая строка `''`. Запрос `SUM(CAST(amount_text AS int))` падает. Какое выражение чаще всего решает проблему, превращая пустые строки в `NULL` перед кастом?
- Все вопросы по «Строки и приведение типов» →