Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi yyyy-mm-dd nach dd.mm.yyyy (https://www.delphipraxis.net/3045-yyyy-mm-dd-nach-dd-mm-yyyy.html)

CalganX 19. Feb 2003 15:28


yyyy-mm-dd nach dd.mm.yyyy
 
Hi,
ich bekomme aus einer Datebank ein Datum im Format yyyy-mm-dd. Wie bekomme ich das jetzt nach dd.mm.yyyy?
Mit StrToDateTime geht es leider nicht (sei nicht gültig und so'n Mist)...
Was für Alternativen gibt es?

Chris

Chewie 19. Feb 2003 15:33

Ich nehme an, es ist eine SQL-Datenbank (MySQL??). Wenn ja, dann schau dir mal die MySQL-Funktionen DAYOFMONTH(), MONTH() und YEAR an. Damit kannst du die einzelnen Datumselemente einzeln abrufen.
Oder du teilst den String mit Copy so auf, wie du ihn brauchts.

CalganX 19. Feb 2003 15:35

Hm... :|
Geht das nicht auf Delphi-Art? Denn ich bin froh, dass ich gerade erstmal überhaupt was aus der Datebank herausbekomme... :roll:

Chris

Chewie 19. Feb 2003 15:41

Hehe. Klar geht das auch in Delphi. Ein DATE-Eintrag ist ein String, der, wie du gesagt hast nach dem Muster YYYY-MM-DD aufgebaut ist, also immer mit den gleichen Längen für die einzelnen Elemente.
Mit Copy geht es so:
Delphi-Quellcode:
var
  buf, date: String;
  year, month, day: Integer;
begin
  //date sei 2003-02-19 
  buf := Copy(date,1,4);
  year := StrtoInt(buf);
  buf := Copy(date,6,2);
  month := StrtoInt(buf);
  buf := Copy(date,9,2);
  day:= StrtoInt(buf);
end;
Ein Beispiel für den Verbindungaufbau (siehe andere Thread) schreib ich dir, sobald ich geduscht hab.

Nachtrag. Ich sehe gerade, dass es auch mit StrtoDate gehen könnte. Du musst nur (wie in der Beschreibung erwähnt) die Variablen DateSeparator und ShortDateFormat auf die richtigen Werte setzen.

S.Krug 19. Feb 2003 15:41

Schon mal mit der Funktion FormatDate('dd.mm.yyyy', XXX) probiert?

CalganX 19. Feb 2003 15:46

FormatDate gibt es nicht!
@Chewie: werde ich gleich mal ausprobieren. Sollte aber funktionieren, so wie ich das sehe...

Chris

Chewie 19. Feb 2003 15:48

Das funktioniert auf jeden Fall. Es kann höchtens sein, dass die Anfangszahlen (zweiter Parameter) eins zu hoch oder zu niedrig sind. Aber das wirst du dann merken und wohl auch beheben können :wink:

S.Krug 19. Feb 2003 15:51

Mein Fehler die Funktion heißt natürlich: FormatDateTime! :oops:

CalganX 19. Feb 2003 15:52

So, angepasst und: Funktioniert! Danke!

Übrigens: die Parameter stimmten alle...

@S.Krug: hat sich jetzt auch erledigt. Trotzdem danke!

Chris

Sharky 19. Feb 2003 15:57

Zitat:

Zitat von Chakotay1308
Hm... :|
Geht das nicht auf Delphi-Art? Denn ich bin froh, dass ich gerade erstmal überhaupt was aus der Datebank herausbekomme... :roll:
Chris

Hai Chris,

ich würde möglichst immer versuchen das Ergebniss der Datenbankabfrage an deine Bedürfnisse anzupassen.

Stelle dir vor in der nächsten Version des SQL-Servers werden die Daten auf einmal in einem anderen Format zurück gegeben. Dann müsstest Du alle stellen in deinem Programm ändern in denen Du mit dem Datum arbeitest.

CalganX 19. Feb 2003 15:59

@Sharky: kann ich verstehen, werde das Programm zu gegebenen Zeitpunkt auch ändern, nur ich versuche jetzt ersteinmal das Programm so zum laufen zu bringen, dass ich meine Website administrieren kann (oops. Zuviel gesagt ;) )...

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz