AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeit abfragen

Ein Thema von BillyBoy · begonnen am 29. Mär 2010 · letzter Beitrag vom 29. Mär 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

Re: Zeit abfragen

  Alt 29. Mär 2010, 16:01
Trunc schneidet den Nachkommateil ab.
TTime und TDateTime haben den Zeitanteil im den Nachkommastellen.

Da TTime ein Fließkommatyp ist, und asTime schon nicht funktioniert, dann kann Trunc nichts verbessern
(nur verschlechtern, siehe erster Punkt)

Ich denke auch mal, daß Time(7) ein inkompatibler Datentyp ist, welcher nicht über asTime auglelesen werden kann,
denn extern sollte es keine Probleme geben, wonach nur noch ein internes Problem bestehen kann.


Time(7) könnte sowas wie ein Unix-Timestamp (sekunden seit irgendwas) als String/Char mit maximal 7 Zeichen sein?
$2B or not $2B
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Zeit abfragen

  Alt 29. Mär 2010, 16:03
Zitat von BillyBoy:
Zeit1 :=ADOQueryKopf.FieldByName('Beginn').AsTime;

.AsTime gibt es leider nicht, .AsDateTime bringt verständlicherweise einen Fehler.
Zitat von BillyBoy:
Es wäre schön, wenn ihr euch mal die Ausgangsfrage ansehen könntet!

Das Feld Beginn ist definiert als time(7).
Das ist kein Character-Zeug, sondern ein reines SQL-Zeitfeld.
Und weil es ein reines Zeitfeld ist, führt auch FieldByName('Beginn').AsDateTime zu einem Fehler !

..
"Fehler" ist eine sehr oberflächliche Fehlerbeschreibung.
Einen Fehler hättest Du auch bekommen weil Zeit1 TTime ist und (wenn es asDateTime gegeben hätte)
TDateTime zurückgeliefert hätte.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Zeit abfragen

  Alt 29. Mär 2010, 16:10
Zitat von BillyBoy:
Es wäre schön, wenn ihr euch mal die Ausgangsfrage ansehen könntet!

Das Feld Beginn ist definiert als time(7).
Das ist kein Character-Zeug, sondern ein reines SQL-Zeitfeld.
Und weil es ein reines Zeitfeld ist, führt auch FieldByName('Beginn').AsDateTime zu einem Fehler !

Dass ich das Ganze als String auslesen kann und anschließend zur Anzeige wieder in ein Zeitformat umwandeln kann ist schon klar, das war nicht die Frage.

gruss
Billy

P.S.: FieldByName('Beginn').AsFloat tut's auch nicht
Frage zur Güte als was kommen die Daten denn in Delphi an?
Delphi-Quellcode:
case q.Fields[i].datatype of
      ftUnknown :   Ftyp:=' Unknown or undetermined';
      ftString :   ftyp:=' Character or string field';
      ftSmallint :   ftyp:=' 16-bit integer field ';
      ftInteger :   ftyp:=' 32-bit integer field ';
      ftWord     :   ftyp:=' 16-bit unsigned integer field';
      ftBoolean :   ftyp:=' Boolean field ';
      ftFloat :   ftyp:=' Floating-point numeric field';
      ftCurrency :   ftyp:=' Money field ';
      ftBCD    :   ftyp:=' Binary-Coded Decimal field';
      ftDate    :   ftyp:=' Date field ';
      ftTime    :   ftyp:=' Time field ';
      ftDateTime :   ftyp:=' lDate and time field ';
      ftBytes :   ftyp:=' Fixed number of bytes (binary storage)';
      ftVarBytes :   ftyp:=' Variable number of bytes (binary storage)';
      ftAutoInc :   ftyp:=' Auto-incrementing 32-bit integer counter field';
      ftBlob    :   ftyp:=' Binary Large OBject field';
      ftMemo    :   ftyp:=' Text memo field ';
      ftGraphic    :   ftyp:=' Bitmap field ';
      ftFmtMemo :   ftyp:=' Formatted text memo field';
      ftParadoxOle:   ftyp:=' Paradox OLE field';
      ftDBaseOle :   ftyp:=' dBASE OLE field ';
      ftTypedBinary:ftyp:=' Typed binary field';
      ftCursor :   ftyp:=' Output cursor from an Oracle stored procedure (TParam only)';
      ftFixedChar :   ftyp:=' Fixed character field ';
      ftWideString:   ftyp:=' Wide string field ';
      ftLargeInt :   ftyp:=' Large integer field ';
      ftADT    :   ftyp:=' Abstract Data Type field';
      ftArray    :   ftyp:=' Array field ';
      ftReference :   ftyp:=' REF field ';
      ftDataSet :   ftyp:=' DataSet field ';
      ftOraBlob :   ftyp:=' BLOB fields in Oracle 8 tables';
      ftOraClob :   ftyp:=' CLOB fields in Oracle 8 tables ';
      ftVariant :   ftyp:=' Data of unknown or undetermined type';
      ftInterface :   ftyp:=' References to interfaces (IUnknown)';
      ftIDispatch :   ftyp:=' References to IDispatch interfaces ';
      ftGuid    :   ftyp:=' globally unique identifier (GUID) values ';
      else ftyp:='!not known!';
    end;{case---------------------------------}
Und Du hast jetzt mehrere Male erwähnt das es Fehler gibt, aber es tunlichst vermieden zu erklären was für Fehler, welche Fehlermeldung usw.
Das würde bestimmt zur Aufklährung beitragen.
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

Re: Zeit abfragen

  Alt 29. Mär 2010, 16:11
Zitat von Klaus01:
Einen Fehler hättest Du auch bekommen weil Zeit1 TTime ist und (wenn es asDateTime gegeben hätte)
TDateTime zurückgeliefert hätte.
TDateTime, TDate, TTime, Double und sowar Extended, Single oder Real sind zuweisungskompatibel.


Zitat von Klaus01:
"Fehler" ist eine sehr oberflächliche Fehlerbeschreibung.
Aber hier hast du vollkommen Recht.
Wie heißt der denn nun genau?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#15

Re: Zeit abfragen

  Alt 29. Mär 2010, 16:22
Ist jetzt wohl schon OT: Uuups: Natürlich schneidet trunc den Nachkommaanteil ab...hab nicht lang genug nachgedacht
Da aber das Format dieses ominösen Feldes offenbar nicht numerisch ist, nützt eine weitere Diskussion in dieser Richtung leider nichts...

Zitat von BillyBoy:
Dass ich das Ganze als String auslesen kann und anschließend zur Anzeige wieder in ein Zeitformat umwandeln kann ist schon klar, das war nicht die Frage.
Ich glaube aber schon, denn Du fragtest, wie Du das auslesen kannst. Und siehe, Du hast die Antwort ja bereits.

Im übrigen dürfte das hier wohl Licht ins Formatdunkel bringen:
http://sqlblogcasts.com/blogs/danny/...data-type.aspx

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
BillyBoy

Registriert seit: 30. Dez 2009
7 Beiträge
 
#16

Re: Zeit abfragen

  Alt 29. Mär 2010, 16:35
Hallo,

das Format time(7) ist ein Zeitformat mit 7 Stellen hinter den Sekunden.
Die 7 ist die Standardvorgabe des SQL Servers.
Damit übergibt er die Zeit als 17:15:00.0000000, was von Delphi nicht ausgewertet werden kann (ok, als string schon)

Ich habe das Feld als time(0) definiert. Nun bringt er wieder ein "ordentliches" Zeitformat 17:15:00.
Dieses kann wieder mit .AsDateTime gelesen werden.


Danke an alle
Billy
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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