![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| UNIX voor Dummies Questions & Answers Als u niet zeker weet waar je een Unix-of Linux vraag, post het hier. Alle UNIX-en Linux beginners van harte welkom!! |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Vergelijk datum db2 tabel tot gisteren Unix datum | sasaliasim | Programmeren en Shell Scripting | 9 | 12-01-2008 11:37 PM |
| Haal de datum en tijd voor afgelopen 1 uur vanaf de huidige datum | spch2o | Programmeren en Shell Scripting | 5 | 08-29-2008 04:32 |
| Verwerken van een logbestand op basis van datum / tijd input en de datum / tijd op de log-bestand | opdoffen | Programmeren en Shell Scripting | 4 | 03-16-2008 11:23 |
| datum vergelijken met datum in bestand | siog | UNIX voor Dummies Questions & Answers | 2 | 10-04-2006 12:10 |
| vergelijken met de datum van vandaag met de datum in een bestand | siog | UNIX voor Dummies Questions & Answers | 4 | 10-04-2006 11:55 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Vergelijk Datum en tijd
Hoi
annuleerteken iemand zenden mij de code voor het vergelijken twee datum en draaien in een shell script. volgt de code die actully ik wil, maar ik krijg fouten. hoogachting Jamil . / opt / home / rep / .profile #! / bin / sh VALUE \u003d `sqlplus stille rep/Ndk38f7 @ dw <<END ingesteld pagesize 0 feedback uitgeschakeld verifiëren uitgeschakeld post off echo off Selecteer TRUNC (max (chg_dt)) van NOT_SCHEDULED_INSTALL; exit; END " Waarde2 \u003d `sqlplus stille rep/Ndk38f7 @ dw <<END ingesteld pagesize 0 feedback uitgeschakeld verifiëren uitgeschakeld post off echo off Selecteer TRUNC (SYSDATE) van dubbele; exit; Einde ` if [[$ value-eq $ waarde2]]; dan echo "Geen rijen terug uit database" exit 0 anders echo $ waarde2 echo $ value fi |
|
||||
|
Oracle heeft al datum rekenen, heeft ksh niet - gebruik van 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
|
|
||||
|
And Now for Something Different
Ik gebruik dit voor en het werkt vrij goed.
Heeft een paar verschillende dingen met de data, afhankelijk van de parameters. #! / usr / bin / ksh # Datecalc - datum Perderabo's rekenmachine # USAGE \u003d "\ datecalc-een jaar maand dag - Jaar Maand Dag datecalc-een jaar maand dag [-|+] n datecalc-d Jaar Maand Dag datecalc-D Jaar Maand Dag datecalc-j jaar maand dag datecalc-JN datecalc-l Jaar Maand gebruik \ "datecalc-help \" te gebruiken voor meer documentatie " DOCUMENTATIE \u003d "\ datecalc Versie 1.1 datecalc heeft vele manipulaties met data. datecalc-a is voor datum rekenkundig datecalc-d of-D converteert een datum om de dag van de week datecalc-j converteert naar datum of naar Juliaanse dag datecalc-l de resultaten van de laatste dag van een maand Alle data moet worden tussen de jaren 1860 en 3999. datecalc-een, gevolgd door 7 parameters berekent de aantal dagen tussen twee data. Parameters 2-4 en 6-8 worden data in ymd vorm, en parameter 5 moet een minteken ondertekenen. De output is een integer. Voorbeeld: > Datecalc-a 1960 12 31 - 1922 2 2 14212 datecalc-een gevolgd door 5 parameters berekent de een nieuwe datum te compenseren vanaf een bepaalde datum, Parameters 2-4 moeten een datum in ymd vorm, moet worden paramter 5 + of -, en paramter 6 moet een geheel getal. Output wordt een nieuwe datum. Voorbeeld: > Datecalc-a 1960 12 31 + 7 1961 1 7 datecalc-d, gevolgd door 3 parameters zullen converteren een datum een dag van de week. Parameters 2-4 moet een datum in ymd vorm. Voorbeeld: > Datecalc-d 1960 12 31 6 datecalc-D is als-d behalve dat de naam van displays de dag. Voorbeeld: > Datecalc-D 1960 12 31 Zaterdag datecalc-j, gevolgd door 3 parameters zullen converteren een datum Gewijzigd op Juliaanse dag nummer. Voorbeeld: > Datecalc-j 1960 12 31 37299 datecalc-j, gevolgd door een enkele parameter zal omzetten Modified Julian Day een nummer aan een datum. Voorbeeld: > Datecalc-j 37299 1960 12 31 datecalc-l gevolgd door een jaar en maand zal de output van de laatste dag van die maand. Merk op dat door het controleren van de laatste dag van Februari kunt test voor schrikkeljaar. Voorbeeld: > Datecalc-l 2002 2 28 " lastday () ( integer jaar maand sprong # Ja fe ma ma ap jn jl ag se oc no de Een set-mlength xx 31 28 31 30 31 30 31 31 30 31 30 31 jaar \u003d $ 1 if ((jaar <1860 | | jaar> 3999)), vandaar print-U2 jaar buiten het bereik return 1 fi maand \u003d $ 2 if ((maand <1 | | maand> 12)), vandaar print-U2 maanden buiten bereik return 1 fi if ((maand! \u003d 2)), vandaar print $ (mlength [maand]) return 0 fi sprong \u003d 0 if ((! (jaar% 100))), vandaar ((! (jaar% 400))) & & sprong \u003d 1 anders ((! (jaar% 4))) & & sprong \u003d 1 fi feblength \u003d 28 ((schrikkeljaar)) & & feblength \u003d 29 print $ feblength return 0 ) date2jd () ( integer ijd dag maand jaar mnjd Lday jd jaar \u003d $ 1 maand \u003d $ 2 dag \u003d $ 3 Lday \u003d $ (lastday $ jaar $ maand) | | exit $? if ((dag <1 | | dag> Lday)); dan print-U2 dag buiten bereik return 1 fi ((standard_jd \u003d dag - 32075 + 1461 * (jaar + 4800 - (14 - maand) / 12) / 4 + 367 * (maand - 2 + (14 - maand) / 12 * 12) / 12 - 3 * ((jaar + 4900 - (14 - maand) / 12) / 100) / 4)) ((jd \u003d standard_jd-2400001)) print $ jd return 0 ) jd2dow () ( integer jd dow numeric_mode set + een dag zondag maandag dinsdag woensdag donderdag vrijdag zaterdag numeric_mode \u003d 0 if [[$ 1 \u003d-n]]; dan numeric_mode \u003d 1 verschuiven fi jd \u003d $ 1 if ((JD <1 | | JD> 782028)), vandaar print-U2 Juliaanse dag buiten het bereik return 1 fi ((dow \u003d (JD +3)% 7)) if ((numeric_mode)); dan print $ dow anders (print $ dagen [dow]) fi terug ) jd2date () ( integer standard_jd temp1 temp2 jd jaar maand dag jd \u003d $ 1 if ((JD <1 | | JD> 782028)), vandaar print Juliaanse dag buiten het bereik return 1 fi ((standard_jd \u003d JD +2400001)) ((temp1 \u003d standard_jd + 68569)) ((temp2 \u003d 4 * temp1/146097)) ((temp1 \u003d temp1 - (146097 * temp2 + 3) / 4)) ((year \u003d 4000 * (temp1 + 1) / 1461001)) ((temp1 \u003d temp1 - 1461 * jaar / 4 + 31)) ((maand \u003d 80 * temp1 / 2447)) ((dag \u003d temp1 - 2447 * maand / 80)) ((temp1 \u003d maand / 11)) ((maand \u003d maand + 2 - 12 * temp1)) ((year \u003d 100 * (temp2 - 49) + jaar + temp1)) print $ jaar $ maand $ dag return 0 ) # # Parse parameters en aan de slag. case $ 1 in -a) if (($ # \u003d\u003d 8)), vandaar if [[$ 5! \u003d -]], vandaar print-U2 - "$ USAGE" afrit 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)), vandaar JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $? case $ 5 in - | +) Eval '((' jd2 \u003d $ (JD1) $ (5) $ (6 }'))' jd2date $ jd2 exit $? ;; *) print-U2 - "$ USAGE" afrit 1 ;; esac fi ;; -d |-D) if (($ #! \u003d 4)), vandaar print-U2 - "$ USAGE" afrit 1 fi JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $? numerieke \u003d- n [[$ 1 \u003d-D]] & & numerieke \u003d "" eval jd2dow numerieke $ $ JD1 exit $? ;; -j) if (($ # \u003d\u003d 4)), vandaar date2jd $ 2 $ 3 4 dollar exit $? Elif (($ # \u003d\u003d 2)), vandaar jd2date $ 2 $ 3 4 dollar exit $? anders print-U2 - "$ USAGE" afrit 1 fi ;; -l) if (($ # \u003d\u003d 3)), vandaar lastday $ 2 $ 3 exit $? anders print-U2 - "$ USAGE" afrit 1 fi ;; -help) print - "$ USAGE" print "" print - "$ documentatie" exit 0 ;; *) Print-U2 - "$ USAGE" exit 0 ;; esac # niet bereikt afrit 7 |
|
||||
|
Een andere manier zou zijn:
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 |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|