#mysql #sql #hiveql
#mysql #sql #hiveql
Вопрос:
Как использовать функцию unix_timestamp() для сравнения дат по строковому типу данных в формате 1/1/2019. Цель состоит в том, чтобы показать все даты до 1/1/2010. Вот что я пытаюсь
ВЫБЕРИТЕ work_date ИЗ таблицы, ГДЕ work_date <= UNIX_TIMESTAMP(‘2010-01-01’);
Комментарии:
1. Вы действительно хотите использовать
UNIX_TIMESTAMP()
для этой цели? Вероятно, есть более эффективные варианты сравнения строки, хранящейся как дата.2.
FROM_UNIXTIME()
3. например, какие другие варианты сравнения строки в качестве даты?
Ответ №1:
… сравнение дат по строке типа данных, которая в формате
'1/1/2019'
. Цель состоит в том, чтобы показать все предыдущие даты'1/1/2010'
.
Я действительно не понимаю, почему вы хотели бы специально использовать UNIX_TIMESTAMP()
для этой цели. По сути, вам просто нужно преобразовать форматированную строку в дату. Для этого вы можете использовать STR_TO_DATE()
.
Рассмотрим:
SELECT work_date
FROM table
WHERE STR_TO_DATE(work_date, '%e/%c/%Y') <= '2010-01-01';
ПРИМЕЧАНИЕ: невозможно определить, начинается ли ваш строковый формат даты с месяца или с дня; приведенный выше формат обозначает второй вариант, если вы хотите, чтобы все было наоборот, тогда это было бы '%c/%e/%Y'
вместо.