Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Select Max(TheDate+TheTme) geht nicht (https://www.delphipraxis.net/122106-select-max-thedate-thetme-geht-nicht.html)

hoika 9. Okt 2008 14:23

Datenbank: FB • Version: 1.5 • Zugriff über: egal

Select Max(TheDate+TheTme) geht nicht
 
Hallo #,

ich speichere Datum + Uhrzeit in 2 getrennten Feldern (Vorgabe, kann nicht geändert werden)
zusammen mit anderen Werten.
Jetzt will ich den neuesten Datensatz haben.

Das obige Select Max geht nicht (viell. mit FB2, ist aber noch keine Option).

Zur Zeit mache ich ein

SQL-Code:
Select First 1 TheDate, TheTime From Table
Order By TheDate Desc, TheTime Desc
Geht das auch anders ?


Dank


Heiko

mkinzler 9. Okt 2008 18:18

Re: Select Max(TheDate+TheTme) geht nicht
 
Was für Typen haben die beiden Felder?

hoika 9. Okt 2008 18:44

Re: Select Max(TheDate+TheTme) geht nicht
 
Hallo,

Date (Dialect 1)


Heiko

mkinzler 9. Okt 2008 19:00

Re: Select Max(TheDate+TheTme) geht nicht
 
Welcher Fehler kommt den bei der Addition?

hoika 9. Okt 2008 19:19

Re: Select Max(TheDate+TheTme) geht nicht
 
Hallo,

expression evaluation not supported

per Cast geht es auch nicht.


Heiko

mkinzler 9. Okt 2008 19:31

Re: Select Max(TheDate+TheTme) geht nicht
 
Bleibt noch die Option einer UDF

omata 9. Okt 2008 19:42

Re: Select Max(TheDate+TheTme) geht nicht
 
Vielleicht so...

SQL-Code:
SELECT MAX(CAST(TheDate + TheTime AS timestamp)) minTimestamp
FROM table

hoika 9. Okt 2008 20:05

Re: Select Max(TheDate+TheTme) geht nicht
 
Hallo,

gleicher Fehler wie oben.


Heiko

omata 9. Okt 2008 20:17

Re: Select Max(TheDate+TheTme) geht nicht
 
Schade, das es bei dir nicht geht.

Ich habe das gerade nochmal mit der Version 1.5.5.4926 ausprobiert.
Tja, was soll ich sagen: Das funktioniert wunderbar.

mkinzler 9. Okt 2008 20:20

Re: Select Max(TheDate+TheTme) geht nicht
 
Vermute mal liegt an dem Dialect 1, welcher ja pre FB ist

omata 9. Okt 2008 20:29

Re: Select Max(TheDate+TheTme) geht nicht
 
Ok, wollte das gerade mal ausprobieren. Dort gibt es aber keinen date bzw. time Datentyp. Oder bin ich zu blöd?

Wie sieht denn die Tabellenstruktur genau aus? Welche Datentypen werden dort benutzt? Etwa Timestamp? genau der wird mir nämlich vorgeschlagen. Dort kann ich dann aber keine Uhrzeit ohne Datum eintragen.

Also wie jetzt?

hoika 9. Okt 2008 20:30

Re: Select Max(TheDate+TheTme) geht nicht
 
Kann sein,
dass es im Date liegt.

Nun ja.

Die andere Variante geht auch,
gefällt mir aber nicht so.

"Closed" ....

Heiko

mkinzler 9. Okt 2008 20:35

Re: Select Max(TheDate+TheTme) geht nicht
 
@omata: Im Dialect 1 hiess der Stamp Date
@hoika:Was spricht gegen eine UDF?

omata 9. Okt 2008 20:39

Re: Select Max(TheDate+TheTme) geht nicht
 
Also ich erhalte dort...
Code:
Engine Code   : 335544436
Engine Message :
SQL error code = -104
Client SQL dialect 1 does not support reference to TIME datatype
SQL warning code = 301
DATE data type is now called TIMESTAMP
Was ist jetzt Stamp Date?

mkinzler 9. Okt 2008 20:43

Re: Select Max(TheDate+TheTme) geht nicht
 
Der Typ Date im Dialect 1 heisst im Dialect 3 TimeStamp

omata 9. Okt 2008 20:44

Re: Select Max(TheDate+TheTme) geht nicht
 
Und wie kann ich im Dialect 1 eine Zeit ablegen (ohne Datum)?

mkinzler 9. Okt 2008 20:49

Re: Select Max(TheDate+TheTme) geht nicht
 
Es gab nur Date, der sowohl Datum wie Zeit beinhaltet

omata 9. Okt 2008 21:23

Re: Select Max(TheDate+TheTme) geht nicht
 
Ok, wie kann Heiko dann beides einzeln speichern?

mkinzler 9. Okt 2008 21:25

Re: Select Max(TheDate+TheTme) geht nicht
 
Er speichert es ja beides in DATE-Feldern (also als Timestamps)

omata 9. Okt 2008 22:52

Re: Select Max(TheDate+TheTme) geht nicht
 
So geht es auch im Dialect 1...

SQL-Code:
SELECT MAX(CAST(EXTRACT(YEAR  FROM TheDate) || '-' || 
                EXTRACT(MONTH FROM TheDate) || '-' || 
                EXTRACT(DAY   FROM TheDate) || ' ' || 
                EXTRACT(HOUR  FROM TheTime) || ':' || 
                EXTRACT(MINUTE FROM TheTime) || ':' || 
                EXTRACT(SECOND FROM TheTime) AS TIMESTAMP))
FROM table

hoika 10. Okt 2008 05:57

Re: Select Max(TheDate+TheTme) geht nicht
 
Hallo,


statt TimeStamp DATE und es klappt tatsächlich !

Nur wird jetzt dummwerweise kein Index mehr verwendet (ist auch logisch)

Omata:
das mit deiner Warnung weiter oben in der Tat auch komisch.
Die DB wird ja als Dialect 1 angesprochen.



also "closed"


Heiko

omata 10. Okt 2008 20:12

Re: Select Max(TheDate+TheTme) geht nicht
 
Zitat:

Zitat von hoika
statt TimeStamp DATE und es klappt tatsächlich !

Was ist dann mit der Uhrzeit :gruebel:

hoika 11. Okt 2008 07:25

Re: Select Max(TheDate+TheTme) geht nicht
 
omata,

irgendwie klappt das nicht, :wall:
ist aber egal.
gelöst.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 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