Oracle: первый и последний день месяца

Намедни столкнулся с проблемой узнать первый и последний день месяца определенной даты.
Для того чтобы узнать последний день месяца есть встроенная в Oracle функция LAST_DAY().
Интереснее узнать первый день месяца.
Понравилось следующее решение:

1
add_months(last_day(to_date(:p_date_from,'dd-mm-yyyy'))+1,-1)

по сути мы к заданной дате применяем функцию LAST_DAY(), прибавляем один день и автоматически перешли на следующий месяц. Далее с помощью ADD_MONTHS() отнимаем один месяц от получившейся даты.

Ссылки по теме:
Статья о работе с датой
Форум Oracle