2015-06-04 4 views
2

У меня такая проблема, я работаю с базой данных Oracle. в одной из моих таблиц есть столбец в формате timestamp, например 06.01.14 08:54:35 Я должен выбрать некоторые данные, группируя этот столбец только по месяцам. результат запроса для столбца, если 06.01.14 затем должен быть Jan.2014 в формате MM.YYYY, я попробовал такой запросOracle: group by month

SELECT to_char(ctime,'mm.yyyy') from table_name

, но результат не в формате даты, это формат строки. Я не мог сделать это с to_date функцией

Можете ли вы помочь мне

+0

http://stackoverflow.com/questions/26863875/group-by-month-in-oracle – C8H10N4O2

ответ

1

Конечно любое изменение на to_char приведет в строчном формате. Это то, что он делает. вы, я думаю, запутанным, как отображается значение и тип данных за ним.

Теперь, если у вас есть поле DATE, то вы можете использовать

TRUNC (CTIME, «MON»)

, который усекает до первого месяца и оставьте его в формате даты. Как вы показываете, это зависит от вас. Но если вы ожидаете, что значение DATE не будет иметь компонент день/час/минута/секунда, то я боюсь, что вы не понимаете тип данных.

+0

спасибо, Майкл, Это то, что я хотел. я показал его по своему вкусу :)) – Faradox

+0

Кроме того, столбец таблицы является типом времени, как вы сказали, день/час/минута/секунда не беспокойтесь – Faradox

2

Если ctime имеет тип TIMESTAMP:

SELECT EXTRACT(month from ctime) "month" from table_name

редактировать: если вы хотите месяц и год, как " Ян-2014 », я думаю, что все, что вам нужно, это:

SELECT TO_CHAR(ctime, 'FMMon - YYYY') from table_name 

(см http://www.techonthenet.com/oracle/functions/to_char.php)

Если ctime представляет собой строку (например, тип VARCHAR) вам необходимо преобразовать отметку времени первого (так выше, вместо ctime, замените TO_TIMESTAMP(ctime, "MM.DD.YY HH:MM:SS")

НТН

+0

Спасибо, что ответили, но этот запрос дает только месяцы, и мне нужны годы, такие как 'Jan - 2015' – Faradox

+1

затем задайте правильный вопрос. Методика здесь звучит. Вы попросили группу «только месяц», чтобы сгруппировать по году, просто добавьте «extract (year from ctime)« year »и group по месяцам и годам. – xQbert

+0

@Faradox это то, что вы ищете? (если да, примите) – C8H10N4O2