Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeit berechnen per SQL SUM ??? (https://www.delphipraxis.net/46911-zeit-berechnen-per-sql-sum.html)

spacewolf 2. Jun 2005 18:11

Datenbank: Firebird • Version: 1.5 • Zugriff über: SQL (InterbaseKomponenten)

Zeit berechnen per SQL SUM ???
 
Moin Leude,

hab versucht per SQL eine Startzeit und Endzeit (welche in einer Tabelle gespeichert sind) mit folgendem SQL Befehl zu berechnen:

SQL-Code:
SELECT sum(ende-start) FROM worklist_qmbriefe
Dabei bekomme ich nur eine Flieskommazahl :shock: zurück, dabei wäre ich aber eher an datetime :shock: interessiert :cyclops:

So weit weiß sind die Tage vor dem Komma und das andere hinter dem Komma, wie das jetzt aber funzt, das ich wieder Zeit aus Fließkommazahl mache, weiß ich nicht...

Oder besser noch per SQL die DateTime zurückbekomme. Weiß "zufällig" irgendjemand bescheid ???

THANX und Gott segne euch :cheers:

euer Andreas

alzaimar 2. Jun 2005 19:13

Re: Zeit berechnen per SQL SUM ???
 
versuchs mal mit "convert (datetime, floatvalue)" oder "cast (floatvalue as datetime)". Das ist MS-SQL Dialekt, schau mal in Deiner Hilfe nach. Normalerweise willst Du aber die Differenz zweier Zeitpunkt in Sekunden, Minuten oder so wissen, und nicht als Datumswert. Dazu gibt es in MSSQL die Funktion "DateDiff (uom, start, stop)" wobei uom ("unit of measurement") als "second","minute" o.ä. angegeben werden muss.

Durchsuche mal die Hilfe deines Servers.

spacewolf 3. Jun 2005 10:04

Re: Zeit berechnen per SQL SUM ???
 
njet... ne, geht nicht: "Funktion unbekannt" meldet Firebird bei DateDiff und convert...

bei

SQL-Code:
SELECT cast((ende-start) AS date) FROM zeiten
meldet er:

Zitat:

Overflow occured during data type conversion.
Conversion error from string "0.000266032037037037037037"
Sollte ich etwa jetzt schon an die grenzen meines Firebirds gekommen sein ?
Also übigens kann Firebird nur date. Date ist sozusagen Datetime.
Im neuen SQL Dialekt 3 kann Firebird date und time separt benutzen.
Tue ich leider nicht verwenden...

sei gesegnet und danke für Deine bemühen

Delphi-Bruder Andreas :-)

Stevie 3. Jun 2005 10:18

Re: Zeit berechnen per SQL SUM ???
 
Hallo,

ich würde an deiner Stelle die beiden Felder Start und Ende selektieren und ein zusätzliches CalculatedField hinzufügen.
Im OnCalcFields-Event deines DataSets benutzt du dann am besten die Funktionen DaysBetween, MinutesBetween usw aus der Unit DateUtils.

MfG
Stevie

alzaimar 3. Jun 2005 10:22

Re: Zeit berechnen per SQL SUM ???
 
Bruder Andreas:
Gesegnet sei das FireBird, auf das es stetig verbessert werde obwohl es Nichts kostet.
Zitat:

Und es sprach der Mar des Alzai (der Sohn des Par'Quin):
"Und Nehmet die Sache selbst in die Hand"
"als das die Hand von euch genommen wird."
Zitat:

Es begab sich zu einer Zeit, als das Datum selbst als Zahl geschrieben wurde als da wurde bestimmt, das ein Datum schreitet immerfort und wird nie kleiner nicht und wachset stetig.
Normalerweise wird ein Datum (Date+Time) Als Anzahl der Tage seit irgend einem 0-Datum (1.1.1900, oder so) repräsentiert. Der Nachkommaanteil ist dabei die Uhrzeit: 0.5 = 12 Uhr mittags, 0.75 = 18 Uhr abends etc.

Firebird is ja nich blöd und macht das bestimmt ähnlich.
Versuchs doch einfach mit
SQL-Code:
select trunc (1440* (ende - start)) as Minute from <MyTable>
Und wenn BireFird das auch nicht kann, dann eben ohne trunc.
Mulizieren und Subtrieren sollte er schon können.

Amen.
@Stevie: Blasphemie

marabu 3. Jun 2005 13:06

Re: Zeit berechnen per SQL SUM ???
 
Zitat:

Zitat von spacewolf
SQL-Code:
SELECT sum(ende-start) FROM worklist_qmbriefe
Dabei bekomme ich nur eine Flieskommazahl zurück, dabei wäre ich aber eher an datetime interessiert

Probiere es mal so:
SQL-Code:
select cast('0:00' as time) + (ende - start) as dauer from worklist_qmbriefe
Grüße vom marabu


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