pcfjkg
Goto Top

Datum schneller in SQL formatieren oder in .net

Eine Tabelle wird in einer SP auf dem MS-SQL Server erzeugt, mehrere Spalten der Tabelle enthalten ein Datum. Die Anzeige soll dann im VB-Projekt im Datagridview erfolgen. Wo wird das anzuzeigende Format am schnellsten angepasst, bereits im SQL oder dann in VB ? Beide stellen die notwendigen Funktionen bereit (z.B. convert() in T-SQL), aber was ist schneller ?

Content-ID: 657008

Url: https://administrator.de/contentid/657008

Ausgedruckt am: 24.11.2024 um 04:11 Uhr

SeaStorm
SeaStorm 27.02.2021 um 13:41:20 Uhr
Goto Top
Teste es doch einfach? Ne Schleife von 1 Mio und Go.

Ansonsten sollte man vielleicht auch bedenken wo man die Ressourcen verbraten will.
Zentral auf dem SQL, wo sich alle die Ressourcen teilen, oder verteilt auf dem Client
PCFJKG
PCFJKG 27.02.2021 um 15:45:48 Uhr
Goto Top
Danke für die Antwort, testen ist natürlich eine Möglichkeit. Ich hatte gehofft, verschiedene Erfahrungen Anderer (mit ggf. unterschiedlichen Bedingungen) nutzen zu können. Aber natürlich trotzdem zunächst danke für Deine Zeit und Grüße von PCFJKG.
maretz
maretz 28.02.2021 um 08:32:14 Uhr
Goto Top
Das Problem wird sein das es idR. keiner wirklich testet da es meist auf die Umgebung ankommt... Wenn du irgendwelche "stored procedures" hast dann stellt sich die Frage nicht. Wenn du nen Serverdienst hast den du via API anfragst stellt sich die Frage nicht (was interessierts mich ob das eine ne ms schneller is oder nich wenn ich danach in der API erst mal x ms verbrate um die Pakete durchs Netz zu bekommen - oder sogar noch ne WAN-Strecke habe ...). Dann kommts ja drauf an wie oft und wo du den Code verwendest - ggf. willst du ja etwas mit der Benutzer-Ansicht machen (das der z.B. das Datumsformat vorgeben kann) - dann macht es wenig Sinn das es die DB macht weil du dann die Spracheinstellung ja vom Client bis zur DB transportieren musst anstatt nur das Datum zu holen und der Client formatiert kurz...

Von daher sind solche Überlegungen idR. sehr Applikationsabhängig - und nich so sehr der Geschwindigkeit geschuldet...
PCFJKG
PCFJKG 28.02.2021 um 11:12:41 Uhr
Goto Top
OK, danke. Gute Hinweise. Deine Überlegung zur Formatierung beim Client ist (zumindest für unseren Fall) tatsächlich ein zielführender Hinweis; zumal ein bestimmter Client - aus persönlichen Gründen - neben dem Datum auch die Fonts noch individuell anpassen will. So muss ohnehin die Formatierung "angefasst" werden. Das hat nun zwar nicht ganz direkt mit meiner Frage zu tun, aber mir kam es eben genau auf ein paar weiterführende Gedanken an, damit man nicht nur "im eigenen Saft schmort".

Also maretz, noch einen schönen Sonntag und danke für Deine Zeit.
Gruß PCFJKG.
ukulele-7
ukulele-7 01.03.2021 um 15:04:15 Uhr
Goto Top
Der Grundsatz ist ja eigentlich auch der, das die DB keine Formatierung ausgibt sondern der Client. Wie genau "formatierst" du denn das Datum in der SP, machst du in der DB aus einer Datumsspalte eine Zeichenkette oder transportiert dein VB das nur als Zeichenkette?
PCFJKG
PCFJKG 02.03.2021 um 08:23:17 Uhr
Goto Top
Hallo ukulele-4,
in der Tabelle auf dem SQL-SERVER besitzt die Spalte den Datentyp <datetime>. Die Anzeige in VB.NET Projekt erfolgt mit einem Datagridview, dessen Datasource eine Datatable ist. Die entsprechende column zur Anzeige des Datums soll aus Übersichtsgründen das Format ddMM.yy besitzen, Das wäre nun einmal als Datagridview.column("xyz").defaultcellstyle = Format ... möglich, oder eben sofort ohne Format der Datagridviewcolumn, wenn in der Datasource, welche über FILL(Table) aus der Rückgabe der SP gefüllt wird, gleich das "richtige" Format in der Column vorliegt. Über CAST in T-SQL oder z.B. CONVERT(varchar(8), datetime-spalte, 12) AS xyz.
Es gibt nun 3 Datumsspalten im Datagridview (Rechnungsdatum, Zahldatum etc.) und meine Unerfahrenheit ist halt, was ist besser, schneller bzw. am professionellsten.
Grüße, PCFJGK.