![]() |
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| UNIX для чайников Вопросы И Ответы Если вы не уверены в том, где разместить UNIX или Linux вопрос, задайте его здесь. Все UNIX и Linux приветствуем новичков!! |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Сравните с даты db2 таблицу вчерашнего Unix системы дате | sasaliasim | Shell программирование и сценарии | 9 | 12-01-2008 11:37 PM |
| Получить дату и время за последние 1 час от текущей даты | spch2o | Shell программирование и сценарии | 5 | 08-29-2008 04:32 AM |
| Обработка лог-файл на основе даты и времени ввода и даты / времени в лог-файл | наряжаться | Shell программирование и сценарии | 4 | 03-16-2008 11:23 AM |
| сопоставить даты с датой в файл | siog | UNIX для чайников Вопросы И Ответы | 2 | 10-04-2006 12:10 PM |
| сравнить сегодняшнюю дату с датой в файл | siog | UNIX для чайников Вопросы И Ответы | 4 | 10-04-2006 11:55 AM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Сравнить Дата и время
Привет
может кто-нибудь прислать мне код сравнить две даты и запустить скрипт. Ниже приводится код, который я хочу actully но я получаю ошибки. рассматривать Джамиль . / отказа / Home / REP / .profile #! / BIN / ш VALUE \u003d `sqlplus-Silent rep/Ndk38f7 @ DW <<END установить pagesize 0 отзывов от проверить покинуть статье покинуть ECHO OFF выберите TRUNC (Max (chg_dt)) из NOT_SCHEDULED_INSTALL; выхода; END ` Value2 \u003d `sqlplus-Silent rep/Ndk38f7 @ DW <<END установить pagesize 0 отзывов от проверить покинуть статье покинуть ECHO OFF выберите TRUNC (sysdate) с двойным; выхода; Конец ` если [[$ VALUE-экв $ Value2]], затем Эхо "Нет строк вернулся из базы данных" выход 0 еще Эхо $ Value2 Эхо $ VALUE FI |
|
||||
|
Oracle уже даты арифметики, не KSH - используйте PL / SQL:
Код:
#!/bin/ksh
date_equal()
{
sqlplus -silent rep/Ndk38f7@dw <<END
set pagesize 0 feedback off verify off heading off echo off serverout on size 100000
DECLARE
date1 DATE:=NULL;
date2 DATE:=NULL;
BEGIN
DBMS_OUTPUT.enable(100000);
select trunc(max(chg_dt)) into date1 from NOT_SCHEDULED_INSTALL;
select trunc(sysdate) into date2 from dual;
IF date1 = date2
THEN
DBMS_OUTPUT.put_line('1');
ELSE
DBMS_OUTPUT.put_line('0');
END IF;
END;
/
exit;
END
}
if [[ $(date_equal) -eq 1 ]] ; then
# do something
else
# do something else
fi
|
|
||||
|
Дата и время проблема
Спасибо за ваш ответ.
Проблема это не работает должным образом, он всегда печати "не OK" если [[$ (date_equal)-экв 1]], затем Эхо 'OK' еще Эхо "не OK" FI спасибо |
|
||||
|
А теперь-то другое
Я использовал это раньше, и оно работает довольно хорошо.
Ли несколько разные вещи с датами в зависимости от параметров. #! / USR / BIN / KSH # Datecalc - Perderabo дата калькулятор # USAGE \u003d "\ datecalc год-месяц день - год месяц день datecalc год-месяц день [-|+] N datecalc-й год месяц день datecalc-D Год месяц день datecalc-й год месяц день datecalc-JN datecalc-L год месяц Использование \ "datecalc помощь \" использовать более документация " ДОКУМЕНТАЦИЯ \u003d "\ datecalc Версия 1.1 datecalc делает много манипуляций с датами. datecalc-а по дате арифметика datecalc-D или D преобразует дату ко дню недели datecalc-й на дату конвертации или из Джулиан день datecalc-л мероприятия в последний день месяца Все даты должны быть между годами 1860 и 3999. datecalc-а следуют 7 параметров расчета количество дней между двумя датами. Параметры 2-4 и 6-8 дата должна быть в форме ymd, а параметр 5 должна быть минус знак. Результатом является целое. Пример: > Datecalc-A 1960 12 31 - 1922 2 2 14212 datecalc-а затем 5 параметров расчета новая дата компенсируется начиная с определенной даты, должны Параметры 2-4 быть на сегодняшний день в ymd виде Параметр 5 должна быть + или -, и Параметр 6 должна быть целым числом. Результатом является новый срок. Пример: > Datecalc-A 1960 12 31 + 7 1961 1 7 datecalc-й, затем 3 параметров конвертирования даты на целый день в неделю. Параметры 2-4 должна быть дата, в ymd форме. Пример: > Datecalc-D 1960 12 31 6 datecalc-Д-Д, как это показывает, кроме названия в день. Пример: > Datecalc-D 1960 12 31 Суббота datecalc-й, затем 3 параметров конвертирования даты с измененным Джулиан День числа. Пример: > Datecalc-J 1960 12 31 37299 datecalc-й следуют одного параметра будут преобразовывать модифицированный юлианский день число на сегодняшний день. Пример: > Datecalc J-37299 1960 12 31 datecalc-л следуют год и месяц выхода последнего день этого месяца. Заметим, что, проверяя в последний день Февраль Вы сможете протестировать в високосный год. Пример: > Datecalc-L 2002 2 28 " lastday () ( целочисленного год месяц скачок # Я Fe AP MA MA JN JL AG SE OC не де - установка А mlength XX 31 28 31 30 31 30 31 31 30 31 30 31 год \u003d $ 1 если ((год <1860 | | год> 3999)), затем Принт-u2 год вне диапазона вернуться 1 FI в месяц \u003d $ 2 если ((месяц <1 | | месяц> 12)), затем Принт-u2 месяц вне диапазона вернуться 1 FI если ((месяц! \u003d 2)), затем Версия для печати $ (mlength [месяц]) вернуться 0 FI прыжок \u003d 0 если ((! (год 100%))), затем ((! (год 400%))) И И скачок \u003d 1 еще ((! (год 4%))) И И скачок \u003d 1 FI feblength \u003d 28 ((прыжок)) И И feblength \u003d 29 Версия для печати $ feblength вернуться 0 ) date2jd () ( целочисленного ijd день месяц год mnjd JD lday год \u003d $ 1 в месяц \u003d $ 2 в день \u003d $ 3 lday \u003d $ ($ lastday год $ в месяц) | | $ выход? если ((день <1 | | день> lday)), затем Принт-u2 день вне диапазона вернуться 1 FI ((\u003d standard_jd день - 32075 + 1461 * (+ 4800 год - (14 - в месяц) / 12) / 4 + 367 * (в месяц - 2 + (14 - в месяц) / 12 * 12) / 12 - 3 * ((+ 4900 год - (14 - в месяц) / 12) / 100) / 4)) ((JD \u003d standard_jd-2400001)) Версия для печати $ JD вернуться 0 ) jd2dow () ( целочисленного JD Dow numeric_mode набор + A дни воскресенье понедельник вторник среда четверг пятница суббота numeric_mode \u003d 0 если [[$ 1 \u003d-N]], затем numeric_mode \u003d 1 перемещение FI JD \u003d $ 1 если ((JD <1 | | JD> 782028)), затем Принт-u2 юлианский день вне диапазона вернуться 1 FI ((Dow \u003d (JD 3)% 7)) если ((numeric_mode)), затем Версия для печати $ Dow еще Версия для печати $ (дней [Dow]) FI вернуться ) jd2date () ( целочисленного standard_jd temp1 temp2 JD месяц день год JD \u003d $ 1 если ((JD <1 | | JD> 782028)), затем Версия для печати Джулиан день вне диапазона вернуться 1 FI ((\u003d standard_jd JD +2400001)) ((temp1 \u003d standard_jd + 68569)) ((temp2 \u003d 4 * temp1/146097)) ((temp1 \u003d temp1 - (146097 * temp2 + 3) / 4)) ((год \u003d 4000 * (temp1 + 1) / 1461001)) ((temp1 \u003d temp1 - 1461 год * / 4 + 31)) ((месяц \u003d 80 * temp1 / 2447)) ((день \u003d temp1 - 2447 в месяц * / 80)) ((temp1 \u003d месяц / 11)) ((\u003d месяц в месяц + 2 - 12 * temp1)) ((год \u003d 100 * (temp2 - 49) + + temp1 год)) распечатать году $ $ $ в месяц день вернуться 0 ) # # Parse параметры и получить работу. случае $ 1 -A), если (($ # \u003d\u003d 8)), затем если [[$ 5! \u003d -]], затем Принт-u2 - "$ USAGE" Exit 1 FI jd1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | $ выход? jd2 \u003d $ (date2jd $ 6 $ 7 $ 8) | | $ выход? ((jd3 \u003d jd1-jd2)) Версия для печати $ jd3 выход 0 Элиф (($ # \u003d\u003d 6)), затем jd1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | $ выход? случае $ 5 - | +) EVAL '((' jd2 \u003d $ ($ jd1) (5) ($ 6 }'))' jd2date $ jd2 выход $? ;; *) Принт-u2 - "$ USAGE" Exit 1 ;; esac FI ;; -D |-D), если (($ #! \u003d 4)), затем Принт-u2 - "$ USAGE" Exit 1 FI jd1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | $ выход? числовое \u003d- N [[$ 1 \u003d-D]] И И числовое \u003d "" EVAL jd2dow $ числовое $ jd1 выход $? ;; -J), если (($ # \u003d\u003d 4)), затем date2jd $ 2 $ 3 $ 4 выход $? Элиф (($ # \u003d\u003d 2)), затем jd2date $ 2 $ 3 $ 4 выход $? еще Принт-u2 - "$ USAGE" Exit 1 FI ;; -L), если (($ # \u003d\u003d 3)), затем lastday $ 2 $ 3 выход $? еще Принт-u2 - "$ USAGE" Exit 1 FI ;; -помощь) печати - "$ USAGE" Версия для печати "" Версия для печати - "$ ДОКУМЕНТАЦИЯ" выход 0 ;; *) Принт-u2 - "$ USAGE" выход 0 ;; esac # не достигли выезд 7 |
|
||||
|
Другой путь будет:
Код:
#!/usr/bin/ksh RET=`sqlplus -silent rep/Ndk38f7@dw <<END set pagesize 0 feedback off verify off heading off echo off select decode(d1,d2,'No rows',to_char(d1)||' '||to_char(d2)) from (select trunc(max(chg_dt)) d1 from NOT_SCHEDULED_INSTALL), (select trunc(sysdate) d2 from dual); exit; END` if [[ "$RET" = "No rows" ]] ; then # do something else # do something else fi |
|
||||
|
Unix-скрипта
Мне нужно немного изменить в этом сценарии.
Мне нужно, если дата меньше sysdate его спать на 1 houre в противном случае моя abc.sh запустить скрипт. спасибо Джамиль |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|