Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Datum umwandeln?!? (https://www.delphipraxis.net/40426-sql-datum-umwandeln.html)

plautzer 15. Feb 2005 16:58

Datenbank: Interbase • Zugriff über: IbStoredProc, IBDataSet

SQL Datum umwandeln?!?
 
Hi,

ich möchte die datensätze aus der tabelle, nach dem datum sotiert, auf verschiedene stringgrids verteilen. Daher möchte ich das datum, besser gesagt das jahr, auslesen um herauszubekomme wieviel tabellen ich brauche. Ich möchte gleich doppelte Datums (Jahr) verhindern, aber wie machen ich das?

Delphi-Quellcode:
Select distinct ABLESEDATUM, ABLESE_NR from tabelle
Kann ich das format so ändern, dass man nur das jahr betrachtet?

Plautzer

lume96 15. Feb 2005 17:43

Re: SQL Datum umwandeln?!?
 
Moin,

Hier die gesuchte Funktion :
SQL-Code:
 EXTRACT(YEAR FROM ABLESEDATUM)
Tschüss,
Lutz

plautzer 15. Feb 2005 17:56

Re: SQL Datum umwandeln?!?
 
Ich danke dir,

wie benutzte ich aber diese funktion?

So funktioniert sie nicht:

Delphi-Quellcode:
Select distinct EXTRACT(YEAR FROM ABLESEDATUM), ABLESE_NR from ABRECHNUNG
Es kommt die Fehlermeldung; ibdataset1: Das feld 'Ablesedatum' wurde nicht gefunden.

Plautzer

lume96 15. Feb 2005 19:50

Re: SQL Datum umwandeln?!?
 
Im Prinzip genau so wie Du geschrieben hast.

Unter Umständen noch ein as AUSGABEJAHR hinzufügen um dem Feld einen Namen zu geben und im Feldeditor der Query-Kompo entsprechend anpassen.

Durch die Verwendung einer Funktion im Select (z.B. SUM oder auch extract) geht der eigentliche Feldname flöten und wenn Du diesen im Feldeditor der Komponente explizit angegeben hast, kommt es zu einem Fehler.

Ich hoffe jedenfalls mal, dass das der Grund ist.

Tschüss,
Lutz

plautzer 16. Feb 2005 14:28

Re: SQL Datum umwandeln?!?
 
Hi,

es funzt!
Ich hatte vergessen das feld 'ablesedatum' aus dem ibdataset zu löschen.

Wie mach ich es aber das sich das DISTINCT nur auf das ablesejahr bezieht, falls ich mehrere spalten auslesen will?

Delphi-Quellcode:
Select Distinct ... As Ablesejahr, Nr, Name etc.
So werden die doppelten einträge bei nr und name auch weggestrichen, wie verhindere ich das?

Dank dir.

Plautzer

lume96 16. Feb 2005 14:51

Re: SQL Datum umwandeln?!?
 
Hi,

Zitat:

Zitat von plautzer
Wie mach ich es aber das sich das DISTINCT nur auf das ablesejahr bezieht, falls ich mehrere spalten auslesen will?

Gar nicht :?: :!:
Gegeben sei folgende Tabelle :
Code:
Tabelle 1

NR    NAME       DATUM
========================
1      ABC         1/1/1980
2      XYZ         1/1/1980
Du willst alle drei Felder haben, aber jedes Jahr soll nur einmal vorkommen, richtig ?

Was soll er Dir denn bei der oben angegebenen Tabelle zurückgeben :
1,ABC,1980
oder doch eher
2,XYZ,1980
????

Die Entscheidung kann er wohl nicht für Dich treffen. Deshalb gilt DISTINCT "global" für alle Felder im SELECT.

Tschüss,
Lutz

plautzer 17. Feb 2005 09:28

Re: SQL Datum umwandeln?!?
 
Achso,

kleiner Denkfehler meinerseits :roll:

Dank dir!

Plautzer


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 Uhr.

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