Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Первый день месяца - типа last_day  [new]
Alexus12
Member

Откуда:
Сообщений: 2868
ORA 8.1.7
нужна функция, принимающая на вход любую дату и возвращающая первый день месяца
например
f(05/01/2005)=01/01/2005
f(25/01/2005)=01/01/2005
f(05/09/2005)=01/09/2005

- то есть противоположность last_day

как лучше сделать?
есть ли параметр для trunc/round, который не дает следующий месяц на 16-ом числе?
8 фев 07, 11:41    [3754947]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Elic
Member

Откуда:
Сообщений: 29990
Alexus12
нужна функция, принимающая на вход любую дату и возвращающая первый день месяца
есть ли параметр для trunc
Месяц
8 фев 07, 11:43    [3754960]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Sxak
Member

Откуда: Nsk
Сообщений: 516
Alexus12
ORA 8.1.7
нужна функция, принимающая на вход любую дату и возвращающая первый день месяца
например
f(05/01/2005)=01/01/2005
f(25/01/2005)=01/01/2005
f(05/09/2005)=01/09/2005

- то есть противоположность last_day

как лучше сделать?
есть ли параметр для trunc/round, который не дает следующий месяц на 16-ом числе?


Просто trunc(d, 'MON')
не понял про параметр не дающий след месяц на 16м числе.... round навернео даст следующий месяц но trunc то нормально обрежет...
8 фев 07, 11:43    [3754964]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
trunc(sysdate, 'month')
8 фев 07, 11:44    [3754965]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Igor Morenko
Member

Откуда: Tula
Сообщений: 308
Попробуйте
SELECT TRUNC(sysdate, 'month') FROM dual
8 фев 07, 11:45    [3754972]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Alexei_Unregistered
Guest
trunc(<date value>,'MM')
8 фев 07, 11:45    [3754974]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Alexus12
Member

Откуда:
Сообщений: 2868
большое спасибо, действительно, округлит только round
смутило упоминимние в мануале: Month (rounds up on the sixteenth day)

а в чем разница между форматами:
MONTH
MON
MM
RM
?
8 фев 07, 11:57    [3755077]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Alexei_Unregistered
Guest
Для TRUNC/ROUND - все равно,
существенно для TO_CHAR/TO_DATE
8 фев 07, 12:00    [3755103]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Михаил А К
Member

Откуда:
Сообщений: 19
add_months(last_day(<дата>), -1) + 1
8 фев 07, 12:00    [3755105]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Elic
Member

Откуда:
Сообщений: 29990
Alexus12
а в чем разница между форматами:MONTH,MON,MM,RM ?
Там же в столбике "Rounding or Truncating Unit" и написано, в чём :)
8 фев 07, 12:02    [3755118]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Alexus12
Member

Откуда:
Сообщений: 2868
странно, ничего нет (картинка)
это книжка Oracle i SQL Reference
Release 3 (8.1.7) September 2000 Part No. A85397-01
8 фев 07, 12:14    [3755231]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Alexus12
Member

Откуда:
Сообщений: 2868


К сообщению приложен файл. Размер - 0Kb
8 фев 07, 12:14    [3755242]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Elic
Member

Откуда:
Сообщений: 29990
Alexus12
странно, ничего нет (картинка)
Ты всё же попробуй пораскинуть мозгами :)
8 фев 07, 12:22    [3755312]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Максим Шоботенко
Member

Откуда: Киев
Сообщений: 151
получи ;-)

select to_date('01'||to_char(sysdate,'MM.YYYY'), 'DD.MM.YYYY') from dual;

--------------------------------
Если к дверям не подходят ключи -
Вышиби двери плечом... В.Цой
9 фев 07, 12:41    [3761135]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Elic
Member

Откуда:
Сообщений: 29990
Максим Шоботенко
to_date('01'||to_char(sysdate,'MM.YYYY'), 'DD.MM.YYYY')
STFF
Я уже не говорю про несответствие форматов
9 фев 07, 12:45    [3761180]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6917
Elic
Максим Шоботенко
to_date('01'||to_char(sysdate,'MM.YYYY'), 'DD.MM.YYYY')
STFF
Я уже не говорю про несответствие форматов

точку забыл...
9 фев 07, 13:15    [3761493]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Олег_Сл
Member

Откуда: Санкт-Петербург
Сообщений: 123
alex-ls
точку забыл...

Сначало согласился.

А потом решил проверить :
 
SQL> select to_date('01'||to_char(sysdate,'MM.YYYY'),'DD.MM.YYYY') from dual
  2  /

TO_DATE(
--------
01.02.07

SQL> select to_date('01.'||to_char(sysdate,'MM.YYYY'),'DD.MM.YYYY') from dual
  2  /

TO_DATE(
--------
01.02.07

SQL> SELECT banner FROM V$VERSION
  2  /

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
CORE    9.2.0.8.0       Production
TNS for 32-bit Windows: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production

SQL> 

Так что не всё так просто.
9 фев 07, 13:57    [3761927]     Ответить | Цитировать Сообщить модератору
 Re: Первый день месяца - типа last_day  [new]
Elic
Member

Откуда:
Сообщений: 29990
Олег_Сл
Так что не всё так просто.
Для того, кто знает, всё просто. RTFM String-to-Date Conversion Rules (FAQ)
Но это подозрительно небрежно.
И всё это фигня по сравнению с недалече приведённой мной ссылкой
9 фев 07, 15:00    [3762572]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить