Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi FormatDateTime und MSSQL (https://www.delphipraxis.net/164951-formatdatetime-und-mssql.html)

Markus70 7. Dez 2011 12:52

FormatDateTime und MSSQL
 
Hallo,

ich habe eine Datenbank von mySQL auf MSSQL konvertiert.
Jetzt habe ich das Problem, das FormatDateTime nicht mehr funktioniert.

Vorher - unter MySQL - habe ich mit label.caption := FormatDateTime('dd.mm.yyyy',Query1.FieldByName('Da tum').Value) den Wert einem Label zugewiesen.
Dieser Befehl scheitert jedoch, wenn ich auf einen MSSQL (2008Express) zugreife.
"Variante des Typs(UnicodeString) konnte nicht in Typ (Double) konvertiert werden."

Jetzt bin ich soweit, das mySQL das Datum als "DD.MM.YYYY hh:mm:ss" liefert, MSSQL jedoch als "YYYY-MM-DD hh:mm:ss"

Eigentlich muß das aber doch gehen, oder?

Markus

Bummi 7. Dez 2011 12:59

AW: FormatDateTime und MSSQL
 
Du hast beim Konvertieren Datum als Varchar() importiert ....

Markus70 7. Dez 2011 13:19

AW: FormatDateTime und MSSQL
 
wie meinst Du das?

Bummi 7. Dez 2011 13:23

AW: FormatDateTime und MSSQL
 
Was für einen Datentyp hast Du mit MSSQL für Datum?

FrankJ28 7. Dez 2011 13:26

AW: FormatDateTime und MSSQL
 
Thomas meint (ich auch), dass dein Feldtyp in der SQL-DB varchar (oder anderer Stringtyp) ist.
Ciao
Frank
EDIT: Thomas war schneller ;-)

Markus70 7. Dez 2011 13:30

AW: FormatDateTime und MSSQL
 
nein, das ist er natürlich nicht.
Format ist datetime2(0), aber auch datetime geht nicht

Bernhard Geyer 7. Dez 2011 13:43

AW: FormatDateTime und MSSQL
 
Was passiert wenn du persistente Felder zu deiner Query anlegst?

Bummi 7. Dez 2011 13:46

AW: FormatDateTime und MSSQL
 
Delphi kann mit dem DateTime2 Typ des SQLServer 2008R2 noch nicht adäquat (wird als WideString verarbeitet) umgehen
ein normales DateTime - Feld ist unproblematisch auch in punkto Verbindungsserver etc.

shmia 7. Dez 2011 13:54

AW: FormatDateTime und MSSQL
 
Zitat:

Zitat von Markus70 (Beitrag 1140041)
Format ist datetime2(0), aber auch datetime geht nicht

Bist du sicher?

Was wird bei folgendem Code angezeigt:
Delphi-Quellcode:
var
   feldtyp : string;
...
  feldtyp := FieldTypeNames[Query1.FieldByName('Datum').FieldType];
  ShowMessage('Feldtyp: '+feldtyp);
Was passiert wenn du deinen Code so abänderst?
Delphi-Quellcode:
label.caption := FormatDateTime('dd.mm.yyyy',Query1.FieldByName('Datum').AsDateTime);

Markus70 7. Dez 2011 13:55

AW: FormatDateTime und MSSQL
 
...und datetime geht doch. :oops:

Danke

Bernhard Geyer 7. Dez 2011 14:52

AW: FormatDateTime und MSSQL
 
Zitat:

Zitat von Bummi (Beitrag 1140053)
Delphi kann mit dem DateTime2 Typ des SQLServer 2008R2 noch nicht adäquat (wird als WideString verarbeitet) umgehen
ein normales DateTime - Feld ist unproblematisch auch in punkto Verbindungsserver etc.

Sollte man normalerweise selbst in den ADOExpress/dbGo-Units patchen können.
Hatte sowas auch mal mit D6 gepatched.

Bummi 7. Dez 2011 17:46

AW: FormatDateTime und MSSQL
 
@Bernhard Geyer

ich verwende lieber kein DateTime2 als in den Komponentensourcen rumzuschrauben, wg. Updates / 3d Party / Entwicklung auf verschiedenen Rechnern. Mal eine Unit ins Projektverzeichnis kopieren und anpassen unter Umständen ja aber mehr wenn ich es vermeiden kann nicht.

Bernhard Geyer 7. Dez 2011 22:04

AW: FormatDateTime und MSSQL
 
Zitat:

Zitat von Bummi (Beitrag 1140132)
ich verwende lieber kein DateTime2 als in den Komponentensourcen rumzuschrauben, wg. Updates / 3d Party / Entwicklung auf verschiedenen Rechnern.

Die gepatchten VCL-Units liegen auf dem Server in definierten Verzeichnis das alle Entwicklerrechner im Suchpfad haben. Der Aufwand das akutell zu halten hält sich wegen der geringen Update-Häufigkeit bei D6 in Grenzen :-)


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