Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Oracle: Arbeitstag und Feiertag ermitteln

Empfohlene Antworten

Hallo liebe Forengemeinde,

ich muss für einen Kalender ermitteln, ob es sich um einen Arbeitstag handelt. Wie kann ich in PL/SQL ermitteln, ob ein bestimmter Tag ein Arbeitstag ist? Wie kann ich ermitteln, ob ein bestimmtes Datum ein Feiertag ist? Gibt es da in PL/SQL vordefinierte Funktionen? Samstag, Sonntag sind bei uns in Deutschland z. B. Wochenende. In anderen Ländern ist das anders.

Hallo,

Du kanst ermitteln, welcher Wochentag es ist (Montag, ....). Ob dies ein Arbeitstag ist, weiss die DB nicht, dies ist eine Definitionssache

SELECT TO_CHAR (SYSDATE, 'DAY') FROM DUAL

Gruss

  • Autor

@ all

danke schon mal für die Antworten.

@ dbwizard

für die Arbeitstage habe ich eine Tabelle, wo die arbeitsfreien Tage drinnstehen. Damit nun mein Anwender nicht z. B. die Feiertage oder Wochenende "manuell" als arbeitsfrei markieren muss, hatte ich gedacht, die Feiertage und Wochenenden dort bereits einzutragen.

Wie würdest Du das machen? Ich brauche einen Kalender, wo für jedes Jahr abgebildet ist, welcher Tag arbeitsfrei ist und welcher nicht.

  • Autor

@ carstenj

recht hast Du. Aber wie würdest Du das mit den Feiertagen machen? Feiertage Deutschland, USA, Japan sind "ein wenig" unterschiedlich.

Hi,

wie in meinem Link gepostet. Ich denke es ist recht elegent, sämtliche Feiertage zu jedem entsprechenden Land in eine Tabelle zu packen. Diese kannst abfragen und wieder mit einer If-Abfrage prüfen, ob dieser Tag in der Tabelle steht oder nicht. Manche (wenn nicht alle?!) Feiertage werden entweder nach einem bestimmten Algorithmus berechnet, oder sind eben fest (3. Oktober, 1. Januar, 25. u 26. Dezember).

Wenn du das global machen möchtest, wirst du viel zu tun haben. Ich finde das Thema recht spannend. Wenn du Hilfe brauchst, mach ich gerne mit. ;)

Schau mal hier:

http://de.wikipedia.org/wiki/Feiertage_in_Japan

http://de.wikipedia.org/wiki/Staatliche_Feiertage_in_den_Vereinigten_Staaten

http://de.wikipedia.org/wiki/Feiertage_in_Deutschland

Bearbeitet von carstenj

Hallo Alex,

Wir haben hier für einen Kunden eine Pesonaleinsatzplanung im Betrieb. In der Schweiz sind die Feiertage in den einzelnen Kantonen und z.t. sogar Städten unterschiedlich. Dies haben wir gelöst, indem wir eine Tabelle Feiertage, alle Kantone (D=Bundesländer) sowie eine Relationstabelle Feiertage-Kantone erstellt haben (Wir gehen in unserer Applikation nicht "tiefer" als auf Kantonsebene.

(auszug)



DESC code_publicholiday

/


Name                           Data Type                     

------------------------------ ------------------------------

PUBLICHOLIDAY_ID               NUMBER                NOT NULL

ISACTIVE                       NUMBER(1,0)           NOT NULL

VALIDFROM                      DATE                  NOT NULL

CREATIONDATE                   TIMESTAMP(6)          NOT NULL

CREATEDBY_ID                   NUMBER                NOT NULL

CHANGEDATE                     TIMESTAMP(6)          NOT NULL

CHANGEDBY_ID                   NUMBER                NOT NULL

SORTKEY                        NUMBER

HOLIDAYDATE                    DATE                  NOT NULL

REPEATEVERYYEAR                NUMBER(1,0)           NOT NULL

DESCRIPTIONGE                  VARCHAR2(100 BYTE)    NOT NULL

DESCRIPTIONFR                  VARCHAR2(100 BYTE)    NOT NULL

DESCRIPTIONIT                  VARCHAR2(100 BYTE)    NOT NULL

VALIDALLCANTONS                NUMBER(1,0)           NOT NULL



DESC CODE_CANTON

/


Name                           Data Type                     

------------------------------ ------------------------------

CANTON_ID                      NUMBER                NOT NULL

CANTON_KURZ                    VARCHAR2(2 BYTE)      NOT NULL

CANTON_LANG_D                  VARCHAR2(40 BYTE)

CANTON_LANG_F                  VARCHAR2(40 BYTE)

CANTON_LANG_I                  VARCHAR2(40 BYTE)

ISVALID                        NUMBER(1,0)           NOT NULL

ISDEFAULT                      NUMBER(1,0)           NOT NULL

ISACTIVE                       NUMBER(1,0)           NOT NULL

CREATOR                        VARCHAR2(10 BYTE)

CREATIONDATE                   DATE

LASTCHANGE                     VARCHAR2(10 BYTE)

LASTCHANGEDATE                 DATE

VALIDFROM                      DATE                  NOT NULL



DESC REL_HOLIDAY_CANTON

/

Name                           Data Type                     

------------------------------ ------------------------------

PUBLICHOLIDAY_ID               NUMBER                NOT NULL

PUBLICHOLIDAYVALIDFROM         DATE                  NOT NULL

CANTON_ID                      NUMBER                NOT NULL

CANTONVALIDFROM                DATE                  NOT NULL



Grüsse

  • Autor

@ all

danke für Eure Hilfe. Letzte Frage: Ich habe mehrere Standorte. Jeder Standort hat genau einen Kalender. Der Kalender ist höchstens einem Standort zugewiesen. D. h. es wird einen Default-Kalender geben. Wie ich den Standort-spezifischen pflegen muss/möchte weiss ich schon. Da habe ich links eine lListe mit Standort/Kalender, wo ich die standortspezifischen pflegen kann. Wie würdet ihr das aber mit dem Default-Kalender machen?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.