SQL Datum Uhrzeit 2 Spalten

Mitglied: Florian86

Florian86 (Level 2) - Jetzt verbinden

04.12.2020 um 20:04 Uhr, 714 Aufrufe, 14 Kommentare

Hallo Zusammen,

ich möchte aus einer SAP Datenbank über Datum und Zeit Daten abfragen.
Datum und Zeit sind aber in separaten Spalten.

probiert habe ich schon folgendes...

gibt es dazu eine Möglichkeit?


MfG

Florian86
Mitglied: michi1983
04.12.2020, aktualisiert um 21:18 Uhr
Hallo,

du versuchst in deinem Beispiel auf eine View zu selektieren, das wird nicht klappen.
Dem Code entnehme ich, dass du dich im Eclipse bewegst, sprich mit CDS Views arbeitest.
Das Replacement Object der MKPF Tabelle lautet
und da musst du eigentlich nicht vorher casten.
Du musst dich nur an das Datenelement halten mit welchem die beiden Felder definiert sind, nämlich DATS.

Du kannst direkt auf die Felder BUDAT und CPUTM abfragen in deinem Beispiel.

Hier ein Beispiel:
Was möchtest du denn mit deiner Abfrage eigentlich selektieren?
Für mich macht das OR nicht wirklich viel Sinn. Wenn du alle Datensätze haben möchtest, die zwischen 03.12.2020 23.00 Uhr und 04.12. 06.00 Uhr erstellt wurden, dann musst du mit einem UND arbeiten.

Gruß
michi

P.S: Bearbeite bei Gelegenheit den Titel des Threads. Das kann für viele verwirrend sein. Mit SQL hat das nur bedingt etwas zu tun.
Bitte warten ..
Mitglied: Florian86
05.12.2020 um 07:31 Uhr
Hallo,

ich möchte mir eben alle Werte im Zeitraum

BUDAT = 03.12.2020 und CPUTM >= 230000 bis
BUDAT = 04.12.2020 und CPUTM <= 060000

Ich habe schon viele Sachen im SAP S4HANA abgefragt aber irgendwie noch nie Datum Uhrzeit aus 2 Spalten. Mit Timestamp isses ja kein Problem.

Arbeiten tu ich hier mit dem SAP eigenen SQL-Editor. Lass ich CPUTM weg und filtere nur das Datum bekomme ich meine Ergebnisse.
Ich möchte aber auch die Zeit noch abgrenzen.

Bitte warten ..
Mitglied: Florian86
05.12.2020 um 07:43 Uhr
Das funktioniert wie folgt ganz gut...

bringe ich aber ein 2. Datum ins spiel mit einer 2. Zeit hab ich keine Ergebnisse mehr
Bitte warten ..
Mitglied: michi1983
05.12.2020 um 09:57 Uhr
Zitat von Florian86:
Arbeiten tu ich hier mit dem SAP eigenen SQL-Editor.
Das heißt über das DBACOCKPIT?

Das hatte ich noch nie genutzt weil die Daten dann ja nicht weiterverarbeiten kann.

Über eine CDS View klappt das ohne Probleme.

Darf ich blöd fragen warum du das genau mit dem SQL Editor machst? Was machst du mit der Erkenntnis der Daten?

Gruß
michi
Bitte warten ..
Mitglied: Florian86
05.12.2020 um 11:17 Uhr
Ich ziehe mir die daten um diese in c# asp.net oder auch in vba in excel darzustellen.

Das funktioniert soweit super solange man weiß auf welche tabellen man zugreifen muss.

Nur jetzt der fall mit den 2 blöden spalten.

In der selektion im sap muss man ja auch erst über das buchungdatum gehen und erst nach der auswertung kann mann die zeit abgrenzen.

Das kann ich in vba oder c# auch nur wäre es schneller das direkt über die sql abfrage abzufangen
Bitte warten ..
Mitglied: michi1983
05.12.2020 um 13:16 Uhr
Genau deshalb fragte ich was du mit den Daten machen möchtest.

Ich sehe mehrere Wege.

1.) Nimm die SE16N Transaktion, da kannst du am einfachsten selektieren und dir die Daten dann als Excel direkt exportieren

2.) Müsste ich prüfen, in APAP und CDS geht es definitiv, den SQL Editor kenne ich zu wenig also keine Garantie: concateniere dir deinen Key und selektiere gegen den

Würde aber in deinem Beispiel definitiv über sie SE16N gehen.

Gruß
michi
Bitte warten ..
Mitglied: Florian86
05.12.2020 um 14:32 Uhr
Ja die se16n ist mir bekannt aber wenn ich mir mehrere tabellen verknüpfe dann bringt mir das nix.
Und im excel habe ich mein ergebnis dann auf knopfdruck.

Über se16n schaue ich mir nur die einzelnen tabellen an wie ich am besten damit arbeite,
Im sql editor prüfe ich das ergebnis und wenn es passt baue ich mir die abfrage im vba oder c# ein.

Das mit concat werde ich probieren
Bitte warten ..
Mitglied: BirdyB
05.12.2020 um 15:15 Uhr
Zitat von Florian86:

Ja die se16n ist mir bekannt aber wenn ich mir mehrere tabellen verknüpfe dann bringt mir das nix.
Zu dem Select habe ich gerade keine Idee, aber verknüpfte Daten kannst du wunderbar per SQVI in Excel bringen...
Bitte warten ..
Mitglied: em-pie
05.12.2020, aktualisiert um 15:24 Uhr
Moin,

Vorweg: ich habe null Ahnung von SAP!

Deine Zeit oben sieht mit nach einem String im Format HHMMSS aus, egal ob hier 00:05 Uhr oder 15:25Uhr enthalten ist.

Die teuerste Variante wäre es doch, im SQL-Statement mit LEFT() und RIGHT() den String zu zerpflücken und mit CONCAT und ':' wieder zusammen zubauen.

Danach dein Datum und deine Zeit addieren (mit einem '+') und dann hättest du einen Timestamp.

Wie gesagt: kenne SAP nicht und schlage hier nur eine teure (im Sinne von Performance) Variante vor!

Edit:
Und wenn du dir das als UDF/ Funktion schreibst, kannst das in vielen anderen Abfragen immer wieder nutzen...

Gruß
em-pie
Bitte warten ..
Mitglied: Florian86
05.12.2020 um 15:32 Uhr
Ich weiß aber im excel das ganze anzusteuern auch für leute die keinen sap zugang haben bzw. Nicht dami arbeiten sollen funktioniert vba wunderbar
Bitte warten ..
Mitglied: Florian86
05.12.2020 um 15:33 Uhr
Danke für die info... das dachte ich mir schon
Bitte warten ..
Mitglied: MadMax
LÖSUNG 07.12.2020 um 16:12 Uhr
Hallo Florian,

ich sag es auch vorneweg: ich habe auch keine Ahnung von SAP, aber Dein Problem sieht mir nach einem gewöhnlichen Datenbankproblem aus.

Wie em-pie schon geschrieben hat, ist seine Lösung teuer, aber das spielt keine Rolle, wenn Du sowieso das "cast" beim Datum verwendest. Besser ist:
Und Du solltest zusehen, daß Du nicht NSDM_V_MKPF.BUDAT mit "cast" anpaßt, sondern das Datum, das Du suchst, in das richtige Format bringst. Ist bei Datenbanken immer besser.

Gruß, Mad Max
Bitte warten ..
Mitglied: Florian86
08.12.2020 um 15:39 Uhr
Danke Max funktioniert super.

Aber Ohne Cast bekomme ich keine Werte und der User soll ja das Datum schon als Datumsformat eingeben, als muss ich das auch so casten.

kannst du mir das bitte noch genauer erklären.

Du sagst ja hier Datum 03.12.2020 und Zeit größer 230000 oder Datum größer 03.12.2020. Warum dieses oder?

Bitte warten ..
Mitglied: MadMax
LÖSUNG 08.12.2020, aktualisiert um 18:04 Uhr
Hallo Florian,

die erste Zeile ist die untere Grenze für Deinen Bereich. Du willst alles haben, was entweder an Deinem ersten Tag nach 23 Uhr liegt oder komplett nach diesem ersten Tag.

Die zweite Zeile ist die obere Grenze des Bereichs. Du willst alles haben, was entweder an dem letzten Tag vor 6 Uhr liegt oder komplett vor dem letzten Tag.

Nochmal zum Cast:
Ich weiß nicht, in welcher Form das Datum in NSDM_V_MKPF.BUDAT vorliegt, wenn ich mir das Format von der Zeit anschaue, dann würde ich mal JJJJMMTT vermuten. Dann kannst Du das Vergleichsdatum auch in dieses Format bringen. Ich verwende da lieber Convert, da kann man mitgeben, welches Format für die Konvertierung verwendet werden soll.

Den Vergleich bekämst Du dann mit NSDM_V_MKPF.BUDAT = convert (char (8), convert (date, '03.12.2020', 104), 112), wenn es das Format ist, das ich oben vermutet habe. Ansonsten form es Dir mit Substring o.ä. zurecht.

Wenn Du nicht direkt mit dem Datentyp oder Format suchst, das Deine Datenbankspalte hat, kann kein Index genutzt werden und es müssen alle Datensätze konvertiert und durchsucht werden. Auch wenn kein Index vorhanden wäre, muß das Datum in allen Zeilen konvertiert werden. Wenn Du nur die rechte Seite anpaßt, dann ist das dieser eine String, der passend geformt wird und das wars. Alles konvertieren ist bei wenigen Daten vielleicht kein Problem, aber wenn es viele sind, hast Du keinen Spaß mehr.

Gruß, Mad Max
Bitte warten ..
Heiß diskutierte Inhalte
Internet
Kein Internet nach Windows 2019 Server Installation
gelöst ZygmundVor 1 TagFrageInternet25 Kommentare

Computer : HP ProLiant DL580 Gen7 , 4x CPU , 16 GB ECC Ram, 1 TB SAS Installation von - Windows 8 Server - ...

Windows 10
Vom Homeoffice auf lokale Dateien zugreifen
SayllesVor 1 TagFrageWindows 106 Kommentare

Guten Morgen, meine Frau ist im Homeoffice, ihr Arbeitgeber stellt ihr einen Access der unter Server 2016 lauft zur Verfügung. Dieser Remote zugriff funktioniert ...

Windows Server
GPO verschieben von Benutzern
gelöst AnGi1964Vor 1 TagFrageWindows Server10 Kommentare

Hallo in die Runde! Ich habe als Neuling hier gleich 2 Fragen und hoffe, das mir geholfen werden kann. 1. Ich habe bei einem ...

Outlook & Mail
Outlook 2019 stürzt bei Erhalt von Besprechungsanfrage ab
gelöst PhiltaerVor 1 TagFrageOutlook & Mail17 Kommentare

Hallo, ich habe ein ganz merkwürdiges Problem. Outlook 2019 stürzt beim Erhalt von Emails die Besprechungsanfragen enthält ab. Das Programm friert ein mit "Reagiert ...

Firewall
Kennt jemand Forcepoint Firewalls oder setzt diese sogar ein?
ZeroTrustVor 1 TagFrageFirewall2 Kommentare

Ich wäre interessiert an User Meinungen über diese Firewall Lösungen. Kenne ich absolut nicht und habe auch noch nie davon gehört, geschweige jemals damit ...

Router & Routing
Router Firewall gesucht
HamBamVor 1 TagFrageRouter & Routing9 Kommentare

Hallo zusammen, ich schaue mich für die Firma aktuell nach neuen Routern für unsere Außenstellen um. Aktuell haben wir da diese silbernen, bei Administratoren ...

Windows Server
Server 2019 - VM (DC) hängt sporadisch
zer0g2224Vor 1 TagFrageWindows Server13 Kommentare

Hallo liebe Kolleginnen und Kollegen, ich habe mal wieder eine Frage zu einem Problem: Eine VM (DC) bleibt im Betrieb sporadisch "hängen". Das äußert ...

Server-Hardware
MacOS Netzwerk für Kreativagentur
phil2goldVor 1 TagFrageServer-Hardware7 Kommentare

Grüße euch! Ich habe eine Kreativagentur, die überwiegend Social Media Content und Werbefilme produziert. In unserem neuen Büro möchte ich ein Netzwerk einrichten, in ...