Как использовать функцию unix_timestamp() для сравнения дат по строковому значению

#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' вместо.