Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi 2 Timestamps subtrahieren und im Zeitformat ausgeben (https://www.delphipraxis.net/58082-2-timestamps-subtrahieren-und-im-zeitformat-ausgeben.html)

smudo 1. Dez 2005 07:58

Datenbank: Interbase • Version: 6.1 • Zugriff über: egal

2 Timestamps subtrahieren und im Zeitformat ausgeben
 
:xmas: Hallo,

hier mal was scheinbar kniffliges. Ich habe zwei Timestamps - TS_Start wird beim Insert gesetzt, TS_End beim Update.
Nun möchte ich per Select die Dauer zwischen Insert und Update ermitteln.

TS_Start=30.11.2005 18:04:20
TS_End=30.11.2005 20:49:36

select TS_End-TS_Start from... = 0,114768518 :gruebel:

Wie bekomme ich aus dieser Zahl einen repräsentativen Zeitwert (2:45:16)?


Vielen Dank
und eine schöne Adventszeit

René

marabu 1. Dez 2005 08:04

Re: 2 Timestamps subtrahieren und im Zeitformat ausgeben
 
Hallo René,

suchst du das hier?

Delphi-Quellcode:
ShowMessage(TimeToStr(TS_End - TS_Start));
Grüße vom marabu

Union 1. Dez 2005 08:06

Re: 2 Timestamps subtrahieren und im Zeitformat ausgeben
 
Versuch es doch mal mit CAST:
SQL-Code:
select Cast(TS_End-TS_Start AS TIME) from ...
Wenn es direkt im SQL sein soll. Wenn es nur um die Umwandlung in Delphi geht, dann die Lösung vom marabu.

marabu 1. Dez 2005 08:11

Re: 2 Timestamps subtrahieren und im Zeitformat ausgeben
 
Hi Union,

SQL geht auch, aber so: klick

Freundliche Grüße vom marabu

Union 1. Dez 2005 08:19

Re: 2 Timestamps subtrahieren und im Zeitformat ausgeben
 
Zitat:

Zitat von marabu
Hi Union,

SQL geht auch, aber so: klick

Freundliche Grüße vom marabu

:twisted: Teuflisch... btw, setze ich IB/FB gar nicht mehr ein. Ich habe nur noch die Dokumentation - dort war es so angegeben.

smudo 1. Dez 2005 08:32

Re: 2 Timestamps subtrahieren und im Zeitformat ausgeben
 
Hallo Union und Marabu,

ihr habt richtig festgestellt, ich möchte das Ganze unabhängig von Delphi in einer SQL-Abfrage realisieren.
Unions Weg funktioniert nicht, da ein Typ-Umwandlungs-Fehler beim Cast auftritt.
Mit Marabus Variante
SQL-Code:
select ..., cast('0:00' as time) + (b.ts_end - b.ts_start) as dauer,...
bekomme ich aber leider nur 00:00:00 zurück.

smudo 1. Dez 2005 08:34

Re: 2 Timestamps subtrahieren und im Zeitformat ausgeben
 
Aber so gehts...
SQL-Code:
select ...,cast('0:00' as time) + (cast(b.ts_end as time) - cast(b.ts_start as time)) as dauer,...
Danke und freundliche Grüße zurück

René

marabu 1. Dez 2005 09:07

Re: 2 Timestamps subtrahieren und im Zeitformat ausgeben
 
Hallo René,

Zitat:

Zitat von smudo
Mit Marabus Variante ... bekomme ich aber leider nur 00:00:00 zurück.

mein Code funktioniert mit TIME Feldern, wie im verlinkten Beitrag gefordert. Du arbeitest mit TIMESTAMP Feldern. Habe vergessen dich auf die nötige Anpassung hinzuweisen - Sorry. Die wesentliche Information für dich war eigentlich das hier:

SQL-Code:
cast('0:00' as time)
Hast es ja trotzdem hinbekommen.

Vorweihnachtliche Grüße vom marabu

smudo 8. Dez 2005 08:26

Re: 2 Timestamps subtrahieren und im Zeitformat ausgeben
 
Hallo :wink: ,

ich greife meine Frage nochmal auf.

Jetzt benötige ich nicht die Ausgabe als Time, sondern als Int
Das heißt, ich möchte die Anzahl der Sekunden oder Millisekunden ausgeben.
Ist eine solche Conversion möglich?

Danke im Voraus

René

smudo 8. Dez 2005 08:32

Re: 2 Timestamps subtrahieren und im Zeitformat ausgeben
 
Sorry, ich war einen Schritt vor der Lösung... :oops:

Aber falls es jemanden interessiert:
SQL-Code:
cast((cast(b.ts_end as time) - cast(b.ts_start as time)) as int)
gibt mir die Dauer in Sekunden aus.

Danke an mich selbst :zwinker:


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