Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Обработка дат / 14 сообщений из 14, страница 1 из 1
24.11.2008, 12:52:09
    #35671426
onetime
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
Добрый день!

Необходимо сделать "оболочку" .sh для процедуры на solaris.
То есть при вызове автоматом передавать ей:
а) Поcледний день предыдущего месяца
б) Первый день предыдущего месяца.

Аналогичные действия, например, на Oracle делаются просто:
а) select trunc(sysdate,'mm')-1 into d2 from dual;
б) select trunc(trunc(sysdate,'mm')-1,'mm') into d1 from dual;

Однако как сделать аналогичное в sh скрипте?

Заранее спасибо!
...
Рейтинг: 0 / 0
24.11.2008, 16:41:13
    #35672156
э?
э?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
onetime,
Может в переменные надо передавать даты?
...
Рейтинг: 0 / 0
24.11.2008, 22:01:12
    #35672790
Mexico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
я сделал так когда мне надо было узнать последние день
Код: plaintext
1.
2.
3.
4.
if [ $(date -d tomorrow +%d) -eq  1  ]; then
    echo "Последние ден"
else
    echo "До конца месяц еще надо жить"
fi

не тот что тебе надо. но поможеть тебе думать


----------------------------------------------
Sorry, my Russian is not as good as my Spanish
...
Рейтинг: 0 / 0
24.11.2008, 22:50:25
    #35672823
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
onetimeДобрый день!

Необходимо сделать "оболочку" .sh для процедуры на solaris.
То есть при вызове автоматом передавать ей:
а) Поcледний день предыдущего месяца
б) Первый день предыдущего месяца.

Аналогичные действия, например, на Oracle делаются просто:
а) select trunc(sysdate,'mm')-1 into d2 from dual;
б) select trunc(trunc(sysdate,'mm')-1,'mm') into d1 from dual;

Однако как сделать аналогичное в sh скрипте?

Заранее спасибо!
У меня работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
$ # Поcледний день предыдущего месяца:
$ date -d  "$(date +%Y-%m-1) -1 day"
Fri Oct  31   00 : 00 : 00       2008 
$ # Первый день предыдущего месяца:
$ date -d  "$(date +%Y-%m-1) -1 month"
Wed Oct   1   00 : 00 : 00       2008 
...
Рейтинг: 0 / 0
25.11.2008, 02:09:17
    #35672930
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
avb1003,

Такого ключа в Солярисе - нет. Если Оракл там все равно стоит, можно сделать так ... :)

Код: plaintext
1.
2.
3.
4.
5.
6.
[oracle@testdb01 ~]$ echo 'select trunc(sysdate)-1 yesterday from dual;'|sqlplus -s / as sysdba

YESTERDAY
---------
23-NOV-08

[oracle@testdb01 ~]$

Иниче придецца парсить дату и вычислять скриптом.
...
Рейтинг: 0 / 0
25.11.2008, 02:28:51
    #35672934
Ося
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
perl
...
Рейтинг: 0 / 0
25.11.2008, 04:07:24
    #35672951
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
Relic Hunteravb1003,

Такого ключа в Солярисе - нет.

Даже не заметил, что нужно для Соляриса. Виноват.
Relic Hunter
...
Иниче придецца парсить дату и вычислять скриптом.
Лучше уж найти и поставить Gnu Date, чем изобретать велосипед. IMHO.
...
Рейтинг: 0 / 0
25.11.2008, 07:20:46
    #35673004
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
avb1003Лучше уж найти и поставить Gnu Date, чем изобретать велосипед. IMHO.Почему? Можно готовый найти. Вариант с GNU date - не портируемый на другие Солярисы, где эта "гнусность" не установлена.
...
Рейтинг: 0 / 0
25.11.2008, 11:46:02
    #35673592
onetime
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
Relic Hunter, Спасибо большое за ответ - помогло =) Почему-то до такого довольно очевидного решения не дошёл сам.

Конечный ответ задачи:

echo 'select trunc(sysdate,'\''mm'\'')-1 d2 from dual;'|sqlplus -s / as sysdba
echo 'select trunc(trunc(sysdate,'\''mm'\'')-1,'\''mm'\'') d1 from dual;'|sqlplus -s / as sysdba

Так же спасибо всем отметившимся. Всё было по делу. Остальные варианты имеют место быть, но не подходят по разным причинам.
...
Рейтинг: 0 / 0
25.11.2008, 13:25:23
    #35674006
onetime
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
Вообще говоря, задача не до конца решена.
Пока научились только выводить на экран результат sql-запроса.
Подскажите, как результат запроса передать в переменную?
...
Рейтинг: 0 / 0
25.11.2008, 13:54:00
    #35674093
fandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
# man perlfaq4
...
Рейтинг: 0 / 0
25.11.2008, 14:15:36
    #35674160
fy
fy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
Как вариант для получения последнего дня предыдущего месяца в Солярке:
(сильно не ругайте=)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#cat end_mon
Y=`date +%Y`
m=`date +%m`
M=`echo "$m-1" | bc`
if [ $M =  0  ]; then
Y=`echo "$Y-1" | bc`
M= 12 
fi
for i in `cal $M $Y`; do :; done
date
printf "%s\n" $i-$M-$Y
#./end_mon
 25  ноября  2008  г.  13 : 50 : 12  GMT+ 3 
 31 - 10 - 2008 
...
Рейтинг: 0 / 0
25.11.2008, 17:45:55
    #35674804
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
Код: plaintext
1.
2.
3.
4.
[oracle@testdb01 ~]$ var1=`echo 'set heading off
> select trunc(sysdate)-1 yesterday from dual;'|sqlplus -s / as sysdba`
[oracle@testdb01 ~]$ echo  $var1
24-NOV-08
[oracle@testdb01 ~]$
onetimeВообще говоря, задача не до конца решена.
Пока научились только выводить на экран результат sql-запроса.
Подскажите, как результат запроса передать в переменную?
...
Рейтинг: 0 / 0
28.11.2008, 12:00:56
    #35681478
onetime
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка дат
Relic Hunter,

ещё раз большое спасибо Теперь задача полностью решена.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Обработка дат / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]