Avatar billede radiv Nybegynder
16. december 2004 - 10:34 Der er 6 kommentarer og
1 løsning

Sammenlign dato DateTime.Now med datetime i MS SQL

Jeg har et typed dataset, hvor jeg skal indsætte en ny række i en tabel. Et af felterne er en datetime, og følgende kode bestemmer datoen:

typedDS.tabelRow nyRække;
DateTime regTid = DateTime.Now;
nyRække.datoFundet = regTid;

Datasettet bliver så opdateret.

Så skal jeg finne den nye række ud fra regTid jeg har sat over:

DataView dv = new DataView(Data.tabel);
dv.RowFilter = "dato = " + "'" + regTid + "'";

Problemet er så at mit dataview ikke indeholder nogle rækker, selv om jeg ser at tabellen er opdateret med en dato. Burde jeg ikke få én række, den som har dato == regTid? Når jeg debugger har rowfilter (tilsyneladende) den samme værdi som det aktuelle felt i tabellen.

Er det bedre at gemme det som ticks, så det er mindre chance for at der blir flere rækker med samme tidsværdi?

Eller kan det løses på en helt tredje måde?
Avatar billede radiv Nybegynder
16. december 2004 - 11:31 #1
Jeg ser nu efter flere omgange debugging at regTid ikke altid er identisk med værdien i databasen.

Kode: regTid = 16-12-2004 10:22:28
Database: dato = 16-12-2004 10:22:29

Hvorfor sker det når min kode er som angivet over?
Avatar billede arne_v Ekspert
20. december 2004 - 23:11 #2
Er det altid kun 1 sekunds forskel ?

Det ligner en "altid rund ned" versus "rund af til nærmeste" fejl.
Avatar billede radiv Nybegynder
21. december 2004 - 00:27 #3
De gange der er en forskel, er det altid 1 sekund forskel. Hvordan kan man runde af/ned tidsangivelser? Jeg synes jeg altid løber ind i problemer når jeg støder på dato/tid i programmering vs. databaser. Findes der nogle gode artikler herom?

Der skal siges at jeg i stedet for at sammenligne på dato, fik fat i den nye rækkes ID, så problemet er nu af en mere generel karakter (dog stadig et problem).
Avatar billede arne_v Ekspert
21. december 2004 - 07:25 #4
.NET DateTime opbevares i 10 millionte dele sekunder

SQLServer DATETIME opbevares i 3 hundrede dele sekunder

oplagte muligheder for afrundings problemer
Avatar billede arne_v Ekspert
21. december 2004 - 07:26 #5
Jeg gætter, men det lyder da ikke helt usandsyneligt.

Prøv evt.:

DateTime regTid = (DateTime.Now / 10000000) * 10000000;

for at køre i hele sekunder
Avatar billede radiv Nybegynder
28. december 2004 - 17:57 #6
Jeg har ikke testet, men prøver når jeg får tid til at eksperimentere med alternativer til den kørende løsning.

Tak for hjælp, og kom med svar så jeg får lukket.
Avatar billede arne_v Ekspert
28. december 2004 - 18:08 #7
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester