#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 года.