![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| UNIX for dummyer Spørgsmål & svar Hvis du ikke ved, hvor man skal sende en UNIX-eller Linux-spørgsmål, efter det her. Alle UNIX og Linux newbies velkommen! |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Sammenlign datoen fra DB2 tabellen til gårsdagens Unix system dato | sasaliasim | Shell Programmering og Scripting | 9 | 12-01-2008 11:37 PM |
| Få dato og tidspunkt for seneste 1 time fra den aktuelle dato | spch2o | Shell Programmering og Scripting | 5 | 08-29-2008 05:32 AM |
| Forarbejdning en logfil, baseret på dato / tid input og dato / tid på logfilen | primp | Shell Programmering og Scripting | 4 | 03-16-2008 11:23 AM |
| sammenligne dato med dato i filen | siog | UNIX for dummyer Spørgsmål & svar | 2 | 10-04-2006 01:10 PM |
| sammenligne dags dato med dato i en fil | siog | UNIX for dummyer Spørgsmål & svar | 4 | 10-04-2006 12:55 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Sammenlign Dato og klokkeslæt
Hej
kan nogen sende mig koden for at sammenligne to dato og køre et shell script. Følgende er den kode, som jeg actully ønsker, men jeg får fejl. henseende Jamil . / opt / home / rep / .profile #! / bin / sh VALUE \u003d `sqlplus lydløs rep/Ndk38f7 @ dw <<SLUT sæt pagesize 0 feedback off kontrollere off position off echo off vælge TRUNC (max (chg_dt)) fra NOT_SCHEDULED_INSTALL; exit; SLUT « Værdi2 \u003d `sqlplus lydløs rep/Ndk38f7 @ dw <<SLUT sæt pagesize 0 feedback off kontrollere off position off echo off vælge TRUNC (SYSDATE) fra dual; exit; End « hvis [[$ value-eq $ værdi2]]; derefter echo "Ingen rækker tilbage fra databasen" exit 0 anden echo $ værdi2 echo $ value fi |
|
||||
|
Oracle har allerede dato regning, ikke ksh ikke - bruge PL / SQL: Code:
#!/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
|
|
||||
|
Og nu til noget andet
Jeg har brugt det før, og det fungerer ganske godt.
Har et par forskellige ting med datoer afhængigt af hvilke parametre. #! / usr / bin / ksh # Datecalc - Perderabo's dato regnemaskine # USAGE \u003d "\ datecalc-a År Måned Dag - År Måned Dag datecalc-a År Måned Dag [-|+] n datecalc-d År Måned Dag datecalc-D År Måned Dag datecalc-j År Måned Dag datecalc-jn datecalc-l år måned bruge \ "datecalc-help \" brug for mere dokumentation " DOKUMENTATION \u003d "\ datecalc Version 1.1 datecalc ikke mange manipulationer med datoer. datecalc-en er til dato aritmetiske datecalc-d eller-D omdanner en dato for den dag i ugen datecalc-j konverterer til dato til eller fra juliansk dag datecalc-l udgange den sidste dag i en måned Alle datoer skal være mellem år 1860 og 3.999. datecalc-en efterfulgt af 7 parametre vil beregne antallet af dage mellem to datoer. Parametrene 2-4 og 6-8 skal datoer i ymd form, og parameter 5 skal være et minus tegn. Outputtet er et heltal. Eksempel: > Datecalc-a 1960 12 31 - 1922 2 2 14212 datecalc-en efterfulgt af 5 parametre vil beregne en ny dato offset fra en given dato, Parametre 2-4 må være en dato i ymd form, skal parameter 5 være + eller -, og parameter 6 skal være et heltal. Output er en ny dato. Eksempel: > Datecalc-a 1960 12 31 + 7 1961 1 7 datecalc-d efterfulgt af 3 parametre vil konvertere en dato til en dag-for-uge. Parametre 2-4 skal være en dato i ymd form. Eksempel: > Datecalc-d 1960 12 31 6 datecalc-D er like-d undtagen det viser navnet på dagen. Eksempel: > Datecalc-D 1960 12 31 Lørdag datecalc-j efterfulgt af 3 parametre vil konvertere en dato til Modificeret juliansk dag nummer. Eksempel: > Datecalc-j 1960 12 31 37299 datecalc-j efterfulgt af en enkelt parameter vil konvertere en Modificeret juliansk dag for at få en dato. Eksempel: > Datecalc-j 37.299 1960 12 31 datecalc-l efterfulgt af år og måneder vil produktionen af de sidste dag i den pågældende måned. Bemærk, at ved at markere den sidste dag i Februar kan du teste for skudår. Eksempel: > Datecalc-l 2002 2 28 " lastday () ( integer år måneder spring # Ja fe ma pa ma jn jl AG se oc ingen de sæt-A mlength xx 31 28 31 30 31 30 31 31 30 31 30 31 år \u003d $ 1 if ((year <1860 | | år> 3999)); derefter print-u2 år uden for rækkevidde tilbagevenden 1 fi måned \u003d $ 2 if ((month <1 | | måned> 12)); derefter print-u2 måneder uden for rækkevidde tilbagevenden 1 fi if ((måned! \u003d 2)); derefter print $ (mlength [måned]) tilbagevenden 0 fi spring \u003d 0 if ((! (år% 100))); derefter ((! (år% 400))) & & spring \u003d 1 anden ((! (år% 4))) & & spring \u003d 1 fi feblength \u003d 28 ((spring)) & & feblength \u003d 29 print $ feblength tilbagevenden 0 ) date2jd () ( heltal ijd dag måned år mnjd jd Lday år \u003d $ 1 måned \u003d $ 2 dag \u003d $ 3 Lday \u003d $ (lastday $ år $ month) | | exit $? if ((dag <1 | | dag> Lday)); derefter print-u2 dag uden for rækkevidde tilbagevenden 1 fi ((standard_jd \u003d dag - 32.075 + 1461 * (år + 4800 - (14 - måned) / 12) / 4 + 367 * (måned - 2 + (14 - måned) / 12 * 12) / 12 - 3 * ((år + 4900 - (14 - måned) / 12) / 100) / 4)) ((JD \u003d standard_jd-2400001)) print $ jd tilbagevenden 0 ) jd2dow () ( heltal jd dow numeric_mode sæt + En dag søndag mandag tirsdag onsdag torsdag fredag lørdag numeric_mode \u003d 0 if [[$ 1 \u003d-n]]; derefter numeric_mode \u003d 1 skift fi jd \u003d $ 1 if ((JD <1 | | jd> 782028)); derefter print-u2 julianske dag uden for rækkevidde tilbagevenden 1 fi ((dow \u003d (jd 3)% 7)) if ((numeric_mode)); derefter print $ dow anden print $ (dage [dow]) fi tilbagevenden ) jd2date () ( heltal standard_jd temp1 temp2 jd år måneder dage jd \u003d $ 1 if ((JD <1 | | jd> 782028)); derefter print Julian dag uden for rækkevidde tilbagevenden 1 fi ((standard_jd \u003d jd 2.400.001)) ((temp1 \u003d standard_jd + 68569)) ((temp2 \u003d 4 * temp1/146097)) ((temp1 \u003d temp1 - (146097 * temp2 + 3) / 4)) ((år \u003d 4000 * (temp1 + 1) / 1.461.001)) ((temp1 \u003d temp1 - 1461 * år / 4 + 31)) ((måned \u003d 80 * temp1 / 2447)) ((dag \u003d temp1 - 2447 * måned / 80)) ((temp1 \u003d måned / 11)) ((måned \u003d måned + 2 - 12 * temp1)) ((år \u003d 100 * (temp2 - 49) + år + temp1)) print $ år $ måned $ dag tilbagevenden 0 ) # # Parse parametre og kommer til at arbejde. tilfælde $ 1 i -a) if (($ # \u003d\u003d 8)); derefter hvis [[$ 5! \u003d -]]; derefter print-U2 - "$ USAGE" exit 1 fi JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $? jd2 \u003d $ (date2jd $ 6 $ 7 $ 8) | | exit $? ((jd3 \u003d JD1-jd2)) print $ jd3 exit 0 elif (($ # \u003d\u003d 6)); derefter JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $? tilfælde $ 5 i - | +) Eval '((' jd2 \u003d $ (JD1) $ (5) $ (6 }'))' jd2date $ jd2 exit $? ;; *) print-U2 - "$ USAGE" exit 1 ;; ESAC fi ;; -d |-D) if (($ #! \u003d 4)); derefter print-U2 - "$ USAGE" exit 1 fi JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $? numeriske \u003d- n [[$ 1 \u003d-D]] & & numerisk \u003d "" eval jd2dow $ numeriske $ JD1 exit $? ;; -j) if (($ # \u003d\u003d 4)); derefter date2jd $ 2 $ 3 $ 4 exit $? elif (($ # \u003d\u003d 2)); derefter jd2date $ 2 $ 3 $ 4 exit $? anden print-U2 - "$ USAGE" exit 1 fi ;; -l) if (($ # \u003d\u003d 3)); derefter lastday $ 2 $ 3 exit $? anden print-U2 - "$ USAGE" exit 1 fi ;; -hjælp) print - "$ USAGE" print "" print - "$ DOKUMENTATION" exit 0 ;; *) Print-U2 - "$ USAGE" exit 0 ;; ESAC # ikke nået exit 7 |
|
||||
|
En anden måde ville være: Code:
#!/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 Lad Oracles afkode-funktionen sammenligner for dig. |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|