Datumsfeld zum Zeitstempel konvertieren

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Datumsfeld zum Zeitstempel konvertieren

Beitrag von kaim77 (Specialist / 200 / 0 / 0 ) »
Guten Tag zusammen,

ich habe ein Selektionsfeld zur Datumsauswahl aufgebaut.
... sale_date FOR sy-datum

ich möchte in einer Tabelle in einer Spalte wo der Zeitstempel drin ist (Feldtyp ist DEC) nach diesem Datum suchen.
Wenn ich jetzt den 25.11.2012 auswähle, mache ich mit
dem Befehl: CONVERT DATE sale_date INTO TIME STAMP sale_date_low TIME ZONE dat.
diesen Zeitstempel: 20.121.125.000.000
ich suche jetzt im Select mit Zeitstempel >= sale_date_low.
Er findet aber nichts. Kann er hier nicht nach >= suchen. In der Tabelle steht als Zeitstempel 20.121.125.120.000. Muss er es nicht trotzdem finden, da ich >= genommen habe.
Oder muss ich nur nach den ersten 10 Stellen des Tabelleeintrags suchen.
Vielen dank für Eure Tipps.

Viele Grüße
Kaim

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Datumsfeld zum Zeitstempel konvertieren

Beitrag von a-dead-trousers (Top Expert / 4394 / 223 / 1182 ) »
hi!

Das >= sollte eigentlich so funktionieren, da es sich ja bei beiden Werten eigentlich um Zahlen (DEC) handelt.
Haben denn beide (das Feld in der Datenbank und das Feld in der Query) auch denselben Datentyp? (z.B. TIMESTAMP)
Oder wenigsten dieselben Längen- und Nachkommastellen-Angaben?
Wenn sie sich darin unterscheiden, kann es zu einer Fehlinterpretation kommen.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Datumsfeld zum Zeitstempel konvertieren

Beitrag von kaim77 (Specialist / 200 / 0 / 0 ) »
Hallo,
das Feld in der Datenbank hat DEC mit der Länge 15.
sale_date_low hat timestamp.

sale_date_low TYPE timestamp,

Viele Grüße
Kaim

Re: Datumsfeld zum Zeitstempel konvertieren

Beitrag von kaim77 (Specialist / 200 / 0 / 0 ) »
Hallo,

ich habe folgendes ausprobiert:
Ein Datensatz mit dem Datum 31.12.2012.

Wenn ich dieses Datum ins von-Feld der Datumsselektion eintrage kommt nichts. Wenn ich es ins bis-Feld eintrage, kommen Daten bis zu diesem Datum.
Wenn ich dann ins von-Feld 31.12.2012 eintrage und ins bis-Feld 01.01.2013, dann kommt dieser Datensatz.
Heißt dies, dass wenn ich einen einzelnen Tag haben möchte trotzdem ein Intervall eingeben muss. D.h. das gewünschte Datum ins von-Feld und ins bis-Feld gewünschtes_Datum +1 Tag?

Viele Grüße
Kaim

Re: Datumsfeld zum Zeitstempel konvertieren

Beitrag von a-dead-trousers (Top Expert / 4394 / 223 / 1182 ) »
hi!

Ah, jetzt weiß ich wo dein (Denk-)fehler liegt.
Zeitstempel beschreiben einen genauen ZEITPUNKT inkl. Uhrzeit.
Wenn du also alle Zeitstempel eines gewissen Tages haben möchstest musst du von 00:00:00 bis 23:59:59 abfragen.

Am einfachsten geht das in deinem Fall bei einer Datusmselektion, wenn du Selektoptions bzw. Rangetabellen wie folgt "umwandelst"

Code: Alles auswählen.

types: ttr_timestamp type range of timestamp.
data: ltr_timestamp type ttr_timestamp.
field-symbols:
  <ls_date> like line of so_date,
  <lsr_timestamp> type line of ttr_timestamp.

loop at so_date assigning <ls_date>.
  append initial line to ltr_timestamp assigning <lsr_timestamp>.
  <lsr_timestamp>-sign = <ls_date>-sign.
  <lsr_timestamp>-option = 'BT'. "Immer BETWEEN ... AND ...
  convert date <ls_date>-low time '000000' into timestamp <lsr_timestamp>-low timezone 'CET'.
  if <ls_date>-high is not initial. "Die ursprüngliche Selektion war bereits BT
    convert date <ls_date>-high time '235959' into timestamp <lsr_timestamp>-high timezone 'CET'.
  else. "Ansonsten nehmen wir einfach den Beginntag
    convert date <ls_date>-low time '235959' into timestamp <lsr_timestamp>-high timezone 'CET'.
  endif.
endloop.
lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Datumsfeld zum Zeitstempel konvertieren

Beitrag von kaim77 (Specialist / 200 / 0 / 0 ) »
Hallo,
danke für die Info.

Ich habe für die Konvertierung

CONVERT DATE saledate-low INTO TIME STAMP saledate_tz TIME ZONE tz. genommen.

In saledate_tz steht dann z.B. 20.121.231.120.000
Wie kann ich diese 120.000 auf 000.00 oder 235.959 stellen, damit ich den Tagesanfang und das Tagesende habe.

Mit

CONVERT DATE saledate-low '000000' INTO TIME STAMP saledate_tz TIME ZONE tz.
oder
CONVERT DATE saledate-low '235959' INTO TIME STAMP saledate_tz TIME ZONE tz.
macht er es nicht.

Viele Grüße
Kaim

Re: Datumsfeld zum Zeitstempel konvertieren

Beitrag von a-dead-trousers (Top Expert / 4394 / 223 / 1182 ) »
Schau dir nochmal den Post von mir an. Ganz speziell das Coding.
Bei dir fehlt das Schlüsselwort TIME.
Solltest du dich verschrieben haben und es funktioniert trotzdem nicht, kannst du anstatt des Zeichenliterals '000000' bzw. '235959' auch eine Variable vom Typ T verwenden der du vor Ausführung von CONVERT DATE die jeweiligen Werte zuweist. Ich weiß jetzt auf die Schnelle nicht ob, CONVERT DATE bei der TIME zwingend ein Zeitfeld (TYPE T) benötigt oder nicht. Einfach ausprobieren.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1011
Views
BP Role mit Zeitstempel
von ABAPlerv » 12.04.2023 07:57 • Verfasst in ABAP® für Anfänger
4
Antw.
2591
Views
Datumsfeld berechnen
von Fools » 07.04.2005 15:52 • Verfasst in ABAP® für Anfänger
1
Antw.
4476
Views
Zeitstempel TIMESTAMP und TIMESTAMPL
von KleinerEisbaer » 15.09.2008 12:53 • Verfasst in ABAP® für Anfänger
6
Antw.
1252
Views
Datumsfeld auf Blank setzen
von Tron » 16.05.2019 13:29 • Verfasst in ABAP® Core
15
Antw.
5650
Views
Konvertierten Zeitstempel in ALV Grid
von Romy » 27.03.2014 09:13 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.