как получить день недели по дате в apache Drill SQL?

Я использую dbeaver, подключенный к apache Drill SQL, пытаясь получить день недели.

Например, для '1/27/2019' днем ​​недели является 1, считая воскресенье первым днем ​​недели.

Пример 2: '1/28/2019', вывод: 2


person Surya    schedule 27.01.2019    source источник


Ответы (2)


В Apache Drill SQL вы должны иметь возможность использовать метод преобразования типа данных TO_CHAR(). . Спецификатор формата 'e' должен быть тем, что вам нужно:

TO_CHAR(my_date_col, 'e')

Если ваши даты хранятся в виде строки, вам нужно сначала преобразовать их в дату, например, используя TO_DATE :

TO_CHAR(TO_DATE(my_string_col, , 'MM/dd/yyyy'), 'e')
person GMB    schedule 27.01.2019
comment
Спасибо, все работает, есть ли способ указать день начала недели в TO_CHAR. выберите to_char(current_timestamp,'e'), он возвращает 7, поскольку воскресенье является последним днем ​​недели. как мы можем получить значение 1, указывающее, что воскресенье является начальным днем ​​недели - person Surya; 27.01.2019
comment
@Surya Я не думаю, что для этого есть стандартный вариант, и я не могу найти его в документации. - person GMB; 27.01.2019
comment
Вы должны были бы свернуть свою собственную логику, например: CASE WHEN TO_CHAR(my_date_col, 'e') = 1 THEN '7' ELSE TO_CHAR( TO_NUMBER( TO_CHAR(my_date_col, 'e'), '#' ) + 1, '#' ) END - person GMB; 27.01.2019

TO_CHAR(date_col, 'e') вернет число. Например, если будний день понедельник, он вернет 1. и так далее...

TO_CHAR(date_col, 'E') вернет символы. Например, если будний день понедельник, он вернет Mon. и так далее...

Убедитесь, что ваш столбец даты находится в формате даты, если нет, сначала преобразуйте его в формат даты с помощью TO_DATE(), а затем выполните описанный выше шаг.

person Babasaheb SP    schedule 17.07.2019