Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Formate in SQL ändern (https://www.delphipraxis.net/58416-formate-sql-aendern.html)

Klaus D. 6. Dez 2005 19:08

Datenbank: ADS • Version: 6.2 • Zugriff über: SQL

Formate in SQL ändern
 
Hallo
Ich habe folgenden SQL String.
SQL-Code:
SELECT DA.id_daten
     , DA.titel
     , DA.filmlaenge
     , DA.isbn
     , DA.erstellt
     , DA.geaendert
     , DA.sid_Genre
     , DA.sid_Format
     , DA.sid_verliehen
     , DA.verliehen_Vorname
     , DA.verliehen_Name
     , DA.verliehen_PLZ
     , DA.verliehen_Ort
     , DA.verliehen_Tel
     , DA.verliehen_am
     , FA.id_format
     , FA.format
     , GR.id_genre
     , GR.genre
     , WG.name
     , WG.id_verliehen

FROM            tbl_daten DA

LEFT OUTER JOIN tbl_format FA
ON             (DA.sid_format=FA.id_Format)

LEFT OUTER JOIN tbl_genre GR
ON             (DA.sid_genre=GR.id_Genre)

LEFT OUTER JOIN tbl_weg WG
ON             (DA.sid_verliehen=WG.id_verliehen)




WHERE ((UPPER(DA.titel)            like :p1) OR
       (UPPER(DA.filmlaenge)       like :p1) OR
       (UPPER(DA.isbn)             like :p1) OR
       (UPPER(DA.verliehen_Vorname) like :p1) OR
       (UPPER(DA.verliehen_am)     like :p1) OR
       (UPPER(FA.format)           like :p1) OR
       (UPPER(GR.Genre)            like :p1))

order by DA.Titel ASC
Mein Problem ist, das "DA.verliehen am" als Date gespeichert ist.der Rest sind alles Stringfelder.
wie kann ich in meinem SQL-Sring dieses Feld in meine Suchfunktion einbeziehen?
MfG...Klaus

marabu 6. Dez 2005 19:27

Re: Formate in SQL ändern
 
Hallo Klaus,

du musst Felder, die keine String-Felder sind, per CAST() in einen String umwandeln bevor du sie mit LIKE untersuchen kannst.

Grüße vom marabu

Klaus D. 6. Dez 2005 20:10

Re: Formate in SQL ändern
 
Es wäre nett wenn sie mir zeigen würden wie ich es wo in meinem String einbinde.
Danke

marabu 6. Dez 2005 20:22

Re: Formate in SQL ändern
 
Die übliche Syntax ist:

SQL-Code:
SELECT CAST(Da.verliehen_am AS VARCHAR(10)) AS verliehen_am FROM ...
In diesem Forum duzen sich alle...

Freundliche Grüße vom marabu

Klaus D. 6. Dez 2005 20:33

Re: Formate in SQL ändern
 
Mein ADS scheint mit CAST ein Problem zu haben.
folgende Fehlermeldung:
Fehlermeldung
Danke für dein Bemühen.
Mfg...Klaus

marabu 6. Dez 2005 20:45

Re: Formate in SQL ändern
 
Das sieht mir eher nach einem groben Syntaxfehler aus. Vielleicht hätte ich dir genauer schreiben sollen, wie du es angehen musst. Ersetze diese Zeile:

SQL-Code:
 (UPPER(DA.verliehen_am)     like :p1) OR
durch hier diese Zeile:

SQL-Code:
 (CAST(DA.verliehen_am AS VARCHAR(10)) like :p1) OR
Dann sollte es funktionieren.

marabu

edit: 1 und lowercase(L) in :p1 verwechselt...

Klaus D. 6. Dez 2005 20:56

Re: Formate in SQL ändern
 
Das selbe in Grün.
Ich werde Morgen ein wenig meine Bücher durchkämpfen und mich bei Gelegenheit noch mal melden.
Danke Klaus

Klaus D. 7. Dez 2005 18:48

Re: Formate in SQL ändern
 
Hallo
So ich noch mal...ich komme nicht weiter.
Es scheint was mit der Formatierung des Strings zu tun zu haben.
HILFE !!!!!!
MfG...Klaus

alzaimar 7. Dez 2005 18:59

Re: Formate in SQL ändern
 
Ich kenne ADS nicht, aber vergleicht man daten nicht mit 'BETWEEN'?
Ich mache es immer so:
SQL-Code:
Select * from MyTable Where MyDateTimeColumn Between :Date and :DateNextDay
Von Delphi aus:
Delphi-Quellcode:
...
  MyQuery.Params.ParamValues['Date'] := MyDate;
  MyQuery.Params.ParamValues['DateNextDay'] := MyDate+3599/3600; // also nicht ganz + 1 Tag, sondern +23:59 
...
'Between' hat den Vorteil, das ein eventueller Index voll zur Geltung kommt. Nur die besten Optimierer erkennen bei einem Cast auf ein VarChar und eine Filterung per 'LIKE', das ein Index verwendet werden kann. Between dagegen ist hier optimal.

marabu 7. Dez 2005 19:03

Re: Formate in SQL ändern
 
Zitat:

Zitat von Klaus D.
Es scheint was mit der Formatierung des Strings zu tun zu haben.

Welche Formatierung von welchem String?

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr.
Seite 1 von 3  1 23      

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