Einzelnen Beitrag anzeigen

Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Firebird - Convert Timestamp function

  Alt 23. Feb 2021, 09:19
Like ist doch für Strings.

Nimm die Datumsfunktionen.

https://firebirdsql.org/refdocs/lang...c-extract.html
Mein Suchfeld in der Applikation ist ein nomales TextEdit.
Darin will ich nach Datum und Text suchen.
Wie das untere Beispiel aufzeigt.
Ich verwende dort die extract Befehle bereits.

Kann doch nicht sein das ich jedes mal das Datum in meinem Landes-Format zusammensetzen muss.
Darum möchte ich für das eine Funktion schreiben.

Code:
SELECT h.*, a.VORNAME ||' '|| a.NACHNAME ||' '|| a.PLZ ||' '|| a.ORT as Besitzer from hund h
left join adresse a on a.ID = h.BESITZER_ID
where
LOWER(h.HUNDNAME) LIKE :suche or
extract(day from h.GEBURTSDATUM)||'.'||extract(month from h.GEBURTSDATUM)||'.'||extract(year from h.GEBURTSDATUM) LIKE :suche or
LOWER(h.CHIP_NR) LIKE :suche or
LOWER(h.ANMELDUNGSGRUND) LIKE :suche or
LOWER(a.VORNAME) LIKE :suche or
LOWER(a.Nachname) LIKE :suche or
LOWER(a.PLZ) LIKE :suche or
LOWER(a.Ort) LIKE :suche

Folgende Prozedur funktioniert, ist aber keine Funktion daher kann ich diese nicht im Join oben verwenden!:

Code:
create or alter procedure CONVERT_DATE (
    DATA timestamp not null)
returns (
    RESULT varchar(30))
as
begin
  if(DATA IS NULL) then
  begin
    result = NULL;
  end
  else
  begin
    result =  (LPAD(extract(DAY FROM DATA),2,'0') ||'.'||
                LPAD(extract(MONTH FROM DATA),2,'0') ||'.'||
                LPAD(extract(YEAR FROM DATA),4,'0') ||' '||
                LPAD(extract(HOUR FROM DATA),2,'0') ||':'||
                LPAD(extract(MINUTE FROM DATA),2,'0') ||':'||
                LPAD(extract(SECOND FROM DATA),7,'0'));
  end
  suspend;
end^

SET TERM ; ^
  Mit Zitat antworten Zitat