powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Обработка дат
14 сообщений из 14, страница 1 из 1
Обработка дат
    #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
Обработка дат
    #35672156
э?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
э?
Гость
onetime,
Может в переменные надо передавать даты?
...
Рейтинг: 0 / 0
Обработка дат
    #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
Обработка дат
    #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
Обработка дат
    #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
Обработка дат
    #35672934
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
perl
...
Рейтинг: 0 / 0
Обработка дат
    #35672951
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunteravb1003,

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

Даже не заметил, что нужно для Соляриса. Виноват.
Relic Hunter
...
Иниче придецца парсить дату и вычислять скриптом.
Лучше уж найти и поставить Gnu Date, чем изобретать велосипед. IMHO.
...
Рейтинг: 0 / 0
Обработка дат
    #35673004
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003Лучше уж найти и поставить Gnu Date, чем изобретать велосипед. IMHO.Почему? Можно готовый найти. Вариант с GNU date - не портируемый на другие Солярисы, где эта "гнусность" не установлена.
...
Рейтинг: 0 / 0
Обработка дат
    #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
Обработка дат
    #35674006
onetime
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще говоря, задача не до конца решена.
Пока научились только выводить на экран результат sql-запроса.
Подскажите, как результат запроса передать в переменную?
...
Рейтинг: 0 / 0
Обработка дат
    #35674093
fandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
# man perlfaq4
...
Рейтинг: 0 / 0
Обработка дат
    #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
Обработка дат
    #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
Обработка дат
    #35681478
onetime
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Relic Hunter,

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


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