AGB  ·  Datenschutz  ·  Impressum  







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

TDateTime und Timestamp

Ein Thema von Trafel21 · begonnen am 15. Jul 2019 · letzter Beitrag vom 15. Jul 2019
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#1

AW: TDateTime und Timestamp

  Alt 15. Jul 2019, 10:00
Code:
DateTimeField.Value := Today:
Das sehe ich in letzter Zeit öfters hier. Den Umweg über Variant finde ich aber auch nicht wirklich prickelnd. Wenn man den Datentyp kennt sollte man IMHO so ansprechen. Der Compiler ist nicht unfehlbar was die automatische Erkennung angeht.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#2

AW: TDateTime und Timestamp

  Alt 15. Jul 2019, 10:11
Code:
DateTimeField.Value := Today:
Das sehe ich in letzter Zeit öfters hier. Den Umweg über Variant finde ich aber auch nicht wirklich prickelnd. Wenn man den Datentyp kennt sollte man IMHO so ansprechen. Der Compiler ist nicht unfehlbar was die automatische Erkennung angeht.
Macht das denn schon der Compiler?

Dachte immer das Vairant zur Laufzeit "irgendwie interpretiert wird" (und wenn man Glück hat, kommt das Richtige dabei raus - meistens )

Variant nutze ich nur, wenn ich mich auf die Interpretation verlassen muss, z. B. bei OleObjekten.

Weiß ich, um was für einen Typ es sich handelt, dann nutze ich den auch. Also: .AsString, .AsInteger, .AsDateTime ... Hat den Vorteil, dass auch die Typsicherheit gewahrt bleibt.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: TDateTime und Timestamp

  Alt 15. Jul 2019, 10:18
Eigentlich kennt jede DB "today" das muß nicht von aussen kommen.
Vor allem Bei DB die über mehrere Standorte weltweit verteilt snd ist das vorteilhaft.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#4

AW: TDateTime und Timestamp

  Alt 15. Jul 2019, 11:11
Code:
DateTimeField.Value := Today:
Das sehe ich in letzter Zeit öfters hier. Den Umweg über Variant finde ich aber auch nicht wirklich prickelnd. Wenn man den Datentyp kennt sollte man IMHO so ansprechen. Der Compiler ist nicht unfehlbar was die automatische Erkennung angeht.
Wenn DateTimeField ein TDateTimeField ist, dann ist das Property Value kein Variant , sondern ein TDateTime . Nur bei einem TField ist Value ein Variant .
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#5

AW: TDateTime und Timestamp

  Alt 15. Jul 2019, 11:22
Wenn DateTimeField ein TDateTimeField ist, dann ist das Property Value kein Variant , sondern ein TDateTime . Nur bei einem TField ist Value ein Variant .
Lach ok, war mir neu. Aber auch irgendwie verwirrend. Ich arbeite nicht mit dem grafischen Feldeditor sondern i.d.R. mit FieldByName oder Fields[0]. Daher habe ich auch in den allermeisten Fällen kein TIrgendeinTypField sondern eben nur ein simples TField. Und dort ist .Value eben ein Variant ^^
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.357 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TDateTime und Timestamp

  Alt 15. Jul 2019, 12:45
Ich sehe in der Ausgangsfrage einige "Ungereimtheiten".

Wenn das Feld wirklich ein TimeStamp ist, dann wäre die Zuweisung Now anstatt Today logischer.
Es scheint auch, als ob es besser wäre, das Feld in der DB als "default current_timestamp" anzulegen.

Aber um das richtig zu bewerten reichen die Info' s nicht.

Die Frage mit Value oder As... kann man auch nicht pauschal beantworten.
Ich sehe es als Vorliebe von mir, habe aber auch meine Gründe.
So erzeugt z.B. ein FeldOderParamter.AsString := '' (ja nach Komponenten) in der DB einen Leerstring anstatt null, was ich so nicht möchte.
Ich habe halt auch viel mit Automatismen (Import, Export, Workflows etc.) zu schaffen, wo ich den Typ nicht unbedingt kenne.
Und Value funktioniert bis jetzt mit den von mir verwendeten Komponenten immer korrekt.
Auch kann in der DB den Feldtyp einfach mal ändern, ohne über Anpassungen im Code nachzudenken.

Frank Reim
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#7

AW: TDateTime und Timestamp

  Alt 15. Jul 2019, 12:56
So erzeugt z.B. ein FeldOderParamter.AsString := '' (ja nach Komponenten) in der DB einen Leerstring anstatt null, was ich so nicht möchte.
Was IMHO ein völlig korrektes Verhalten ist. Möchte man ein NULL, sollte man explizit TField.Clear verwenden. Bedenke, es kann ja z.B. ein VARCHAR() NOT NULL Feld sein, wo man dennoch einen Leerstring zuweisen könnte. Oftmals ist das bei den neueren Edeldödel-Konnektoren so gelöst, dass man besagtes Verhalten durch irgendwelche Connection-Parameter beeinflussen kann.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.357 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TDateTime und Timestamp

  Alt 15. Jul 2019, 13:24
Was IMHO ein völlig korrektes Verhalten ist. Möchte man ein NULL, sollte man explizit TField.Clear verwenden. Bedenke, es kann ja z.B. ein VARCHAR() NOT NULL Feld sein, wo man dennoch einen Leerstring zuweisen könnte. Oftmals ist das bei den neueren Edeldödel-Konnektoren so gelöst, dass man besagtes Verhalten durch irgendwelche Connection-Parameter beeinflussen kann.
Damit hast du völlig recht.

Aber wenn ich in der DB in leeren VARCHAR - Feldern Null anstatt '' haben will, geht das halt nur mit Variants und Value.
Auch wenn es Komponenten gibt, wo ich über z.B. BlankAsNull oder wie immer das benannt ist das Verhalten steuern kann...

Frank
Frank Reim
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:53 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 by Thomas Breitkreuz