![]() |
datediff im grid
hallo zusammen
Delphi-Quellcode:
funktioniert.
datediff(minute,arbeitsbeginn,arbeitsende )as zeit
from arbeitszeiten Die Zeit wird mir als Minutenwert angezeigt. Das Feld lässt sich aber nicht formatieren Setze ich DisplayFormat von TColumn im DBGRid auf HH:mm mir im Feld "HH:mm" angezeigt Was läuft da falsch ? Muss ich das noch ins Datumsformat casten? wenn ja wie ? Ich danke euch |
AW: datediff im grid
Hallo khh,
wenn Du es im (MS) SQL CASTEN willst, dann könntest Du das so machen: CONVERT(CHAR(8), Datum, 114) Hierbei heißt der CAST dann CONVERT 8-) , wobei der erste Parameter der Typ des Ergebnis ist, (CHAR(8), der 2. Parameter ist Dein DB-Feld, dass du umwandelt willst und der letzte Parameter drückt aus, dass es sich um eine Uhrzeit im Format hh:mm:ss:mmm im 24 Stunden Format ist. Damit kann man auch Datums-Formate erzeugen, z. B. Parameter 104 ergibt tt.mm.jjjj bei einer Länge von CHAR(10). Der Rückgabewert ist dann allerdings ein String, und kein Datum- /Zeitwert mehr. Gruß Rolf |
AW: datediff im grid
Zitat:
Code:
anstatt so:
'HH:mm'
Code:
HH:mm
|
AW: datediff im grid
convert kennt firebird wohl nicht
BadenPower, nein die Formatierung wurde nicht in '' übegeben :-( |
AW: datediff im grid
Zitat:
|
AW: datediff im grid
@mkinzler
Code:
bringt mir :
select cast(arbeitsende - arbeitsbeginn as time)
from arbeitszeiten overflow occurred during data type conversion conversion error from string '0,333333' |
AW: datediff im grid
SQL-Code:
select
cast(datediff(minute,arbeitsbeginn,arbeitsende) as char(8)) as zeit from arbeitszeiten; |
AW: datediff im grid
jetzt hab ich die Zeit in Minuten, ich danke dir,
aber die Formatierung HH:mm im grid wird einfach ignoriert. Kann ich das in der Query noch irgendwie in std und min umwandeln? |
AW: datediff im grid
Zitat:
|
AW: datediff im grid
Zitat:
|
AW: datediff im grid
und wie krieg ich das jetzt am effektivsten hin?
|
AW: datediff im grid
In der Abfrage oder bei der Anzeige?
|
AW: datediff im grid
ich denke am besten bei der abfrage, oder ists bei der Anzeige besser wenn man die Performence berücksichtigt ?
|
AW: datediff im grid
Dann versuch es mal mit
SQL-Code:
Gruß
cast(datediff(minute,arbeitsbeginn,arbeitsende) as Time) as zeit
K-H |
AW: datediff im grid
Zitat:
|
AW: datediff im grid
Code:
SELECT TimeDiff(cast(arbeitsbeginn as Time),cast(arbeitsende as Time)) as zeit FROM arbeitszeiten
|
AW: datediff im grid
Zitat:
@khh bevor noch ein paar untaugliche Vorschläge kommen, was für einen Typ hat
Delphi-Quellcode:
und
arbeitsbeginn
Delphi-Quellcode:
?
arbeitsende
Und wenn Du nicht die Anzahl von irgendwas sondern Stunden und Minuten ausgeben willst, dann übergib einen Date/Time Typen Gruß K-H |
AW: datediff im grid
arbeitsbeginn und arbeitsende sind beide vom typ timestamp
und timediff kennt er leider nicht :-( |
AW: datediff im grid
Zitat:
Code:
SELECT (SEC_TO_TIME(TIMESTAMPDIFF(SECOND,arbeitsbeginn,arbeitsende))) as Zeit FROM arbeitszeiten
|
AW: datediff im grid
Zitat:
Muss ich jetzt LEIDER sagen ? :-( |
AW: datediff im grid
SQL-Code:
select
arbeitsende - arbeitsbeginn from arbeitszeiten; |
AW: datediff im grid
hallo markus,
so hab ich wieder den Dezimalwert vom Tag. für 12 stunden also 0,5 DisplayFormat auf HH:mm zu setzen zeigt mir im Feld HH:mm an, funktioniert also nicht. Wie bekomme ich das Anzeigefeld in std und min formatiert? Das muss doch irgendwie gehen :-( |
AW: datediff im grid
Also wenn du in/mit Sekunden rechnest, ist es ganz einfach. So ergibt z.B.:
Code:
folgendes:
select
time '00:00:00' + 10000 as test from ...
Code:
(Also 10000 Sekunden in dem Beispiel)
02:46:40
|
AW: datediff im grid
hallo olli
dann muss ich aber die Differenz der beiden timestampfelder in sekunden haben :-( |
AW: datediff im grid
Zitat:
Minuten * 60 => Sekunden :gruebel: |
AW: datediff im grid
:oops:
|
AW: datediff im grid
Ihr seid die Besten :-)
Delphi-Quellcode:
funktioniert, mit einem kleinen Manko,time '00:00:00' + (datediff(minute,arbeitsbeginn,arbeitsende ))as zeit from arbeitszeiten den führenden Taganteil müsste man noch ausblenden oder abschneiden können ;-) der kann eh nie vorkommen |
AW: datediff im grid
Hat unter Lazarus TField auch den InGetText-Event?
Dann in dem
Delphi-Quellcode:
Text := FormatDateTime( 'HH:MM', Sender.Value);
|
AW: datediff im grid
Wenn Du in DateDiff als ersten Parameter statt "minute" "second" nimmst, dann bekommst Du die Sekunden.
Und die formatierte Ausgabe im Grid bekommst Du jetzt wieder mit der Property DisplayFormat = hh:mm:ss wenn auch die Sekunden erwünscht sind. |
AW: datediff im grid
also mit datediff und second habe ich jetzt die sekunden in einem time-feld ( kein timestamp).
dieses lässt sich über displayformat HH:mm NICHT formatieren. statt dessen steht wieder "HH:mm" im Feld :-( |
AW: datediff im grid
Ich verweise noch mal auf #28
|
AW: datediff im grid
Zitat:
InGetText gibt es unter Lazarus nicht |
AW: datediff im grid
die formatierung per displayformat funktioniert ja mit einem Timestamp-feld.
dann sollte doch ein cast von time nach timestamp funtionieren, oder ? wie bekomme ich den cast in der Query unter ? select datediff(second,arbeitsbeginn,arbeitsende )as zeit from arbeitszeiten |
AW: datediff im grid
Darf der Rückgabewert auch ein String sein?
Code:
select
substr(time '00:00:00' + datediff(second, arbeitsbeginn, arbeitsende), 1, 5) as zeit from Arbeitszeiten |
AW: datediff im grid
Zitat:
danke olli, aber substr kennt firebird leider nicht :-( |
AW: datediff im grid
Zitat:
|
AW: datediff im grid
ich habs jetzt so gelöst:
Delphi-Quellcode:
Allerdings bekomme ich so einen integer Wert.datediff(second,arbeitsbeginn,arbeitsende )/3600 as zeit from hwd_arbeitszeiten Jemand ne Idee wie ich zu einem Dezimalwert komme, damit ich an die Minuten rankomme ? |
AW: datediff im grid
Zitat:
Delphi-Quellcode:
datediff(second,arbeitsbeginn,arbeitsende )/3600.0000 as zeit from hwd_arbeitszeiten |
AW: datediff im grid
super, ich danke euch
jetzt noch den dezimalwert nach timestamp dann passts :-) |
AW: datediff im grid
Zitat:
Zitat:
Das Event heisst "OnGetText" und steht TField auch bei Lazarus zur Verfügung. Was mich allerdings wundert ist das DisplayFormat beim TE nicht funktioniert. Habe es nochmals geprüft und es funktioniert bei mir tadellos. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 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