Oracle SQL: транспонировать столбцы в строки после использования извлечения

#sql #oracle

#sql #Oracle

Вопрос:

У меня есть таблица с датой столбца. Дата ‘дд / мм / гггг’, и мне нужны только дни. Итак, я пытаюсь извлечь и вернуть то, что мне нужно, но я использую транспонирование для столбца в строку. Оператор select является:

 select EXTRACT (DAY FROM "DATE") DAY
from people;
  

Возможно ли это?

Спасибо!

Комментарии:

1. было бы полезно, если бы вы могли предоставить образцы данных и ожидаемый результат?

2. кажется, вы хотите отменить выделение, но сколько столбцов и какое ограничение в пределах условия WHERE у вас есть? Здесь есть только один столбец…

Ответ №1:

Если у вас есть строка, просто используйте два крайних левых символа:

 select substr("DATE", 1, 2) as day
  

Тем не менее, вы не должны хранить даты в виде строк. Это неправильно, неправильно, неправильно. Вы не можете использовать встроенные функции даты / времени. Вы также не можете использовать сравнения неравенств. Исправьте свою модель данных.

Комментарии:

1. Даты — это дата, а не строка.

2. @louisssee но вы сказали, что дата — ‘дд / мм / гггг’ . Дата не имеет формата, поэтому выглядело так, как будто вы говорили о строке.

Ответ №2:

Формат даты не имеет значения. Это связано с вашими локальными настройками NLS, и вот как вы это видите.

Чтобы сделать его универсальным и извлечь ДЕНЬ из даты, сделайте это: select to_char(sysdate, 'DD') from dual;

Вернется 07 с 7 сентября 2020 года.